home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / database / bdem22.zip / DEMO.PRG < prev    next >
Text File  |  1994-10-27  |  178KB  |  4,755 lines

  1. *******************************************************************************
  2. *******************************************************************************
  3. ** Program:      DEMO.PR1                                                    **
  4. ** Created:      10/25/94    18:19:01                                        **
  5. **                                                                           **
  6. **        Written By:  Mark H. Kania                                         **
  7. **        Builder v2.2 Demo Program                                          **
  8. **        Copyright (c) 1994 Aeolus Software                                 **
  9. **                                                                           **
  10. ** Compile:      Clipper Demo /n /w                                          **
  11. **    Link:      {linker} Fi Demo,BMouse Li Builder,BldrAsm                  **
  12. **                                                                           **
  13. **      --- Source Created Automatically by the Aeolus BUILDER v2.2 ---      **
  14. *******************************************************************************
  15. *******************************************************************************
  16. **                               FUNCTION MAP:                               **
  17. **          Funcs are not in 'map order' in the program.  This is a          **
  18. **         listing of the order funcs are executed.  In other words          **
  19. **                           a logic flow diagram.                           **
  20. **                                                                           **
  21. ** MENU - Root Menu                                                          **
  22. **   MENU002 - Builder Menu                                                  **
  23. **     MENU006 - Menus Menu                                                  **
  24. **       HAND022 - View BDEMO002.TXT (Menus)                                 **
  25. **     MENU005 - Dialogs Menu                                                **
  26. **       HAND023 - View BDEMO003.TXT (Dialogs)                               **
  27. **       DLOG035 - Dialog Sample                                             **
  28. **         HAND036 - Dialog Prompt                                           **
  29. **           DLOG037 - Show Progress Thermometer                             **
  30. **             HAND038 - Display Progress Thermometer                        **
  31. **     MENU003 - Picklist Menu                                               **
  32. **       HAND102 - Picklist No Options Setup                                 **
  33. **         PLST027 - No Options Picklist                                     **
  34. **           HAND032 - No Opts Picklist Selection                            **
  35. **       DLOG028 - Bounded by Picklist (By State)                            **
  36. **         HAND056 - Setup Bounded by Picklist                               **
  37. **           PLST029 - Picklist Bounded by Sample                            **
  38. **             HAND033 - Bounded Picklist Selection                          **
  39. **       HAND103 - QWERTY Scroll Option Setup                                **
  40. **         PLST030 - QWERTY Picklist Sample                                  **
  41. **           HAND031 - QWERTY Picklist Selection                             **
  42. **       HAND024 - View BDEMO004.TXT (PickLists)                             **
  43. **       DLOG128 - Lateral Scroll Picklist Sample                            **
  44. **         HAND129 - Lateral Scroll Picklist Sample                          **
  45. **           PLST130 - Lateral Scroll Picklist Sample                        **
  46. **             HAND133 - Lateral Scroll Picklist Sample                      **
  47. **     MENU004 - File Maintenance Menu                                       **
  48. **       HAND025 - View BDEMO005.TXT (F Maint)                               **
  49. **       HAND104 - File Maintenance Setup                                    **
  50. **         FMNT034 - City File Maintenance                                   **
  51. **     HAND150 - Initialize Parm Passing                                     **
  52. **       DLOG020 - Builder Desc Text File View                               **
  53. **         HAND021 - View BDEMO001.TXT                                       **
  54. **     MENU008 - BMOUSE Menu                                                 **
  55. **       HAND026 - View BDEMO006.TXT (bMouse)                                **
  56. **     HAND138 - View BDEMO019.TXT (Incentives)                              **
  57. **     MENU147 - TBrowse Menu                                                **
  58. **       HAND148 - View BDEMO020.TXT (Incentives)                            **
  59. **       HAND149 - Position TBrowse Database                                 **
  60. **         BRWS146 - TBrowse Demo                                            **
  61. **           BRWS152 - Related TBrowse Test                                  **
  62. **   MENU007 - Breport Menu                                                  **
  63. **     HAND039 - View BDEMO007.TXT (Breport)                                 **
  64. **   MENU009 - Library Menu                                                  **
  65. **     HAND040 - View BDEMO008.TXT (Lib Funcs)                               **
  66. **     MENU017 - Screen Menu                                                 **
  67. **       DLOG041 - Winpush/Pop Sample                                        **
  68. **       DLOG042 - Center() Sample                                           **
  69. **         HAND043 - Center() Sample                                         **
  70. **       DLOG044 - Message Sample                                            **
  71. **         HAND045 - Message Sample                                          **
  72. **       MENU046 - MsgBox() Menu                                             **
  73. **         HAND047 - Plain MsgBox() Sample                                   **
  74. **         HAND048 - Array MsgBox() Sample                                   **
  75. **         HAND049 - Menu MsgBox() Sample                                    **
  76. **         HAND050 - Prompt MsgBox() Sample                                  **
  77. **       DLOG051 - SetMsgLin() Sample                                        **
  78. **         HAND105 - SetMsgLin() Sample                                      **
  79. **       DLOG052 - Thermometr() Sample                                       **
  80. **         HAND053 - Thermometr() Sample                                     **
  81. **       HAND054 - View BDEMO009.TXT (Screen)                                **
  82. **       DLOG064 - AddPrompt() Sample                                        **
  83. **       DLOG065 - Ask() Sample                                              **
  84. **         HAND066 - Ask() Sample                                            **
  85. **       DLOG067 - AskMenu() Sample                                          **
  86. **         HAND068 - AskMenu() Sample                                        **
  87. **       HAND134 - aPop() Sample                                             **
  88. **       DLOG141 - GetEdit() Sample                                          **
  89. **         DLOG140 - AbGetEdit() Sample                                      **
  90. **     MENU016 - Database Menu                                               **
  91. **       DLOG057 - Gen_Maint() Lib Func                                      **
  92. **         HAND142 - Parm Pass mOpts                                         **
  93. **           FMNT058 - City File Maintenance                                 **
  94. **       DLOG059 - Rel_Maint() Sample                                        **
  95. **         HAND060 - Rel_Maint() Sample                                      **
  96. **           DLOG063 - Rel_Maint() Sample                                    **
  97. **             HAND139 - Rel_Maint() Sample                                  **
  98. **               PLST061 - Rel_Maint() Sample                                **
  99. **                 RMNT062 - Rel_Maint() Sample (Maint)                      **
  100. **       DLOG069 - Plist() Sample                                            **
  101. **       DLOG072 - Save_It() Sample                                          **
  102. **       DLOG070 - Browser() Sample                                          **
  103. **         HAND071 - Browser() Sample                                        **
  104. **       DLOG073 - Fld_Repl() Sample                                         **
  105. **       DLOG074 - iSeek() Sample                                            **
  106. **       DLOG082 - Open_Fil() Sample                                         **
  107. **       HAND055 - View BDEMO010.TXT (Database)                              **
  108. **     MENU015 - Valid Menu                                                  **
  109. **       DLOG077 - Show_Text() Sample                                        **
  110. **       DLOG075 - PckVld() Sample                                           **
  111. **       DLOG076 - ChkChk() Sample                                           **
  112. **       DLOG078 - InFile() Sample                                           **
  113. **       DLOG079 - DupChk() Sample                                           **
  114. **       DLOG080 - GenVld() Sample                                           **
  115. **       DLOG081 - Req() Sample                                              **
  116. **       DLOG083 - Rght_Jst() Sample                                         **
  117. **         HAND084 - Rght_Jst() Sample                                       **
  118. **       HAND085 - View BDEMO011.TXT (Valid)                                 **
  119. **     MENU014 - DOS Menu                                                    **
  120. **       DLOG089 - ChgDir() Sample                                           **
  121. **         HAND090 - ChgDir() Sample                                         **
  122. **       DLOG091 - ChgDsk() Sample                                           **
  123. **       DLOG092 - MakDir() Sample                                           **
  124. **         HAND093 - MakDir() Sample                                         **
  125. **       DLOG094 - InPath() Sample                                           **
  126. **         HAND095 - InPath() Sample                                         **
  127. **       DLOG096 - MaxHndls() Sample                                         **
  128. **         HAND097 - MaxHndls() Sample                                       **
  129. **       HAND086 - View BDEMO012.TXT (DOS)                                   **
  130. **     MENU013 - Text Menu                                                   **
  131. **       DLOG098 - fEof() Sample                                             **
  132. **       DLOG099 - fGets() Sample                                            **
  133. **       DLOG100 - fGetsR() Sample                                           **
  134. **       DLOG101 - TextView() Sample                                         **
  135. **       HAND087 - View BDEMO013.TXT (Text Files)                            **
  136. **     MENU012 - Memo Menu                                                   **
  137. **       DLOG106 - Edt_Memo() Sample                                         **
  138. **         HAND107 - Edt_Memo() Sample                                       **
  139. **       DLOG108 - Show_Memo() Sample                                        **
  140. **       HAND088 - View BDEMO014.TXT (Memo Files)                            **
  141. **     MENU011 - Control Menu                                                **
  142. **       DLOG111 - TimeOut() Sample                                          **
  143. **         HAND112 - TimeOut() Sample                                        **
  144. **           DLOG113 - TimeOut() Sample                                      **
  145. **       DLOG110 - TotalKeyOn()/TotalKeyOff()                                **
  146. **       HAND109 - View BDEMO015.TXT (Control)                               **
  147. **     MENU010 - Conversion Menu                                             **
  148. **       DLOG115 - Hex2Dec() Sample                                          **
  149. **         HAND116 - Hex2Dec() Sample                                        **
  150. **       DLOG117 - Dec2Hex() Sample                                          **
  151. **         HAND118 - Dec2Hex() Sample                                        **
  152. **       DLOG125 - Asc2Bin() Sample                                          **
  153. **       HAND114 - View BDEMO016.TXT (Convrsn)                               **
  154. **     MENU018 - Other Lib Funcs Menu                                        **
  155. **       DLOG121 - ErrTone() Sample                                          **
  156. **         HAND124 - ErrTone() Sample                                        **
  157. **       DLOG122 - WaitKey() Sample                                          **
  158. **         HAND123 - WaitKey() Sample                                        **
  159. **       DLOG131 - Between() Sample                                          **
  160. **       DLOG132 - Numeric() Sample                                          **
  161. **       DLOG135 - DbState() Sample                                          **
  162. **       HAND120 - View BDEMO018.TXT (Other)                                 **
  163. **     MENU019 - Mouse Lib Funcs Menu                                        **
  164. **       DLOG137 - SetMouse() Sample                                         **
  165. **       DLOG126 - AddMPad()/DelMPad() Sample                                **
  166. **         HAND127 - AddMPad()/DelMPad() Sample                              **
  167. **       HAND119 - View BDEMO017.TXT (Mouse)                                 **
  168. **       DLOG136 - MouseInit() Sample                                        **
  169. *******************************************************************************
  170. *******************************************************************************
  171. ** Additional Procs/Funcs in this Source File:                               **
  172. **                                                                           **
  173. ** CHKNTXS      - Verify All System Indexes, Build if Missing.               **
  174. ** OPENFILES    - Open All System Database and Indexes.                      **
  175. ** DBINIT1      - Initialize Database Field Arrays.                          **
  176. **                                                                           **
  177. *******************************************************************************
  178.  
  179. #include "Demo.ch"
  180. #include "Builder.ch"
  181. #include "Inkey.ch"
  182. #include "Set.ch"
  183. #include "SetCurs.ch"
  184.  
  185. // Memo Variables
  186. MEMVAR cMemChk1
  187.  
  188. // OPTIONS.DBF variables
  189. MEMVAR cSys_Name,cAppl_Name,cPrt_Port,lHelp_Edit, ;
  190.    lHelp_On,nHMax_Lins,cScrn_Hdr
  191. MEMVAR qScrn_Hdr,qDsk_Chr,qMsg_Lin,qTsttxt,qReset,qCmprs
  192. MEMVAR qLndcmp
  193.  
  194.  
  195. // Related Maintenance window Key variables
  196. MEMVAR cRelKey1,cRelKey2,cRelKey3,cRelKey4,cRelKey5
  197.  
  198. // Static Arrays to Hold Database Field Data
  199. STATIC aCities := {},aFriends := {}
  200.  
  201. ******************************************************************************
  202. ** Initialize All Database Static Arrays                                    **
  203. ******************************************************************************
  204. **                                                                          **
  205. **  Builder places database field data into STATIC arrays allowing more     **
  206. **  control for field edits etc.  This, however, means that access to the   **
  207. **  database fields in other modules will require that the proper array(s)  **
  208. **  are passed as parameters into those modules.  Note that all code        **
  209. **  within this .PRG does not require this parameter passing, only outside  **
  210. **  modules.  Outside modules should also #include the Builder created      **
  211. **  header file that contains the manifest constants which access the       **
  212. **  database field arrays.                                                  **
  213. **                                                                          **
  214. **  Each of the array elements for the database arrays created in this      **
  215. **  procedure has its own unique manifest constant defined.  Using the      **
  216. **  manifest constants instead of array syntax makes for more readable      **
  217. **  code.  See the header file Demo.ch for the constants to                 **
  218. **  access database data in this program.                                   **
  219. **                                                                          **
  220. **  REMEMBER:  Manifest constants are CASE SENSITIVE!!                      **
  221. **                                                                          **
  222. ******************************************************************************
  223. PROCEDURE DbInit1()
  224.    aCities := ARRAY(Cities->(FCOUNT()))
  225.    Cities->(DbStor(aCities,"EMPTY"))
  226.  
  227.    aFriends := ARRAY(Friends->(FCOUNT()))
  228.    Friends->(DbStor(aFriends,"EMPTY"))
  229.  
  230.  
  231. INIT PROCEDURE Main()
  232. LOCAL I,GetList := {},e,oOldErrBlk
  233.  
  234. ************************** Initialize Clipper SET's ***************************
  235. ALTD( 0 )          // Need Alt+D for Menus
  236. SET(_SET_SOFTSEEK,.T.)
  237. SET(_SET_DELETED,.T.)
  238. SET(_SET_SCOREBOARD,.F.)
  239. SET(_SET_WRAP,.T.)
  240. SET(_SET_CONFIRM,.F.)
  241. SET(_SET_EPOCH,1964)
  242. SETCURSOR(SC_NONE)
  243.  
  244. // Post the Builder Errorblock with error outuput to be sent to
  245. // BLDRERR.DBF.  Change "FILE" to "SCREEN" to redirect output
  246. // to the screen.
  247. oOldErrBlk := ERRORBLOCK( {|e| BldrErr(e,"FILE") } )
  248.  
  249. SET DATE AMERICAN
  250. SET CENTURY OFF
  251.  
  252. ************************* Initialize System Variables *************************
  253. USE Options NEW SHARED ALIAS Options VIA "DBFNTX"
  254.  
  255. VarInit()                        // set Builder defaults
  256. Var(WNDW_STYLE,Options->WndwStyle)           // Set Default Window Style
  257.  
  258. ** Declare variables for OPTIONS.DBF **
  259. PRIVATE cSys_Name,cAppl_Name,cPrt_Port,lHelp_Edit, ;
  260.         lHelp_On,nHMax_Lins,cScrn_Hdr
  261. PRIVATE qScrn_Hdr,qDsk_Chr,qMsg_Lin,qTsttxt,qReset,qCmprs
  262. PRIVATE qLndcmp
  263.  
  264. IF ISCOLOR()
  265.    IF(EMPTY(Options->cBkgd_Clr),NIL,Var(BKGD_CLR_,Options->cBkgd_Clr))
  266.    IF(EMPTY(Options->cWndw_Clr),NIL,Var(WNDW_CLR_,Options->cWndw_Clr))
  267.    IF(EMPTY(Options->cwMsg_Clr),NIL,Var(WMSG_CLR_,Options->cwMsg_Clr))
  268.    IF(EMPTY(Options->cwErr_Clr),NIL,Var(WERR_CLR_,Options->cwErr_Clr))
  269.    IF(EMPTY(Options->cwRev_Clr),NIL,Var(WREV_CLR_,Options->cwRev_Clr))
  270.    IF(EMPTY(Options->cShdw_Clr),NIL,Var(SHDW_CLR_,Options->cShdw_Clr))
  271.    IF(EMPTY(Options->cErr_Clr),NIL,Var(ERR_CLR_,Options->cErr_Clr))
  272.    IF(EMPTY(Options->cMsg_Clr),NIL,Var(MSG_CLR_,Options->cMsg_Clr))
  273.    IF(EMPTY(Options->cHdr_Clr),NIL,Var(HDR_CLR_,Options->cHdr_Clr))
  274.    IF(EMPTY(Options->cHdr_Msg),NIL,Var(HDR_MSG_,Options->cHdr_Msg))
  275.    IF(EMPTY(Options->cHelp_Clr),NIL,Var(HELP_CLR_,Options->cHelp_Clr))
  276.    IF(EMPTY(Options->cBrws_Clr),NIL,Var(BRWS_CLR_,Options->cBrws_Clr))
  277.    IF(EMPTY(Options->cBrws_Rev),NIL,Var(BRWS_REV_,Options->cBrws_Rev))
  278.    IF(EMPTY(Options->cBrws_Hl1),NIL,Var(BRWS_HL1_,Options->cBrws_Hl1))
  279.    IF(EMPTY(Options->cBrws_Hr1),NIL,Var(BRWS_HR1_,Options->cBrws_Hr1))
  280.    IF(EMPTY(Options->cBrws_Hl2),NIL,Var(BRWS_HL2_,Options->cBrws_Hl2))
  281.    IF(EMPTY(Options->cBrws_Hr2),NIL,Var(BRWS_HR2_,Options->cBrws_Hr2))
  282.    IF(EMPTY(Options->cHlgt_Clr),NIL,Var(HLGT_CLR_,Options->cHlgt_Clr))
  283. ELSE
  284.    IF(EMPTY(Options->mBkgd_Clr),NIL,Var(BKGD_CLR_,Options->mBkgd_Clr))
  285.    IF(EMPTY(Options->mWndw_Clr),NIL,Var(WNDW_CLR_,Options->mWndw_Clr))
  286.    IF(EMPTY(Options->mwMsg_Clr),NIL,Var(WMSG_CLR_,Options->mwMsg_Clr))
  287.    IF(EMPTY(Options->mwErr_Clr),NIL,Var(WERR_CLR_,Options->mwErr_Clr))
  288.    IF(EMPTY(Options->mwRev_Clr),NIL,Var(WREV_CLR_,Options->mwRev_Clr))
  289.    IF(EMPTY(Options->mShdw_Clr),NIL,Var(SHDW_CLR_,Options->mShdw_Clr))
  290.    IF(EMPTY(Options->mErr_Clr),NIL,Var(ERR_CLR_,Options->mErr_Clr))
  291.    IF(EMPTY(Options->mMsg_Clr),NIL,Var(MSG_CLR_,Options->mMsg_Clr))
  292.    IF(EMPTY(Options->mHdr_Clr),NIL,Var(HDR_CLR_,Options->mHdr_Clr))
  293.    IF(EMPTY(Options->mHdr_Msg),NIL,Var(HDR_MSG_,Options->mHdr_Msg))
  294.    IF(EMPTY(Options->mHelp_Clr),NIL,Var(HELP_CLR_,Options->mHelp_Clr))
  295.    IF(EMPTY(Options->mBrws_Clr),NIL,Var(BRWS_CLR_,Options->mBrws_Clr))
  296.    IF(EMPTY(Options->mBrws_Rev),NIL,Var(BRWS_REV_,Options->mBrws_Rev))
  297.    IF(EMPTY(Options->mBrws_Hl1),NIL,Var(BRWS_HL1_,Options->mBrws_Hl1))
  298.    IF(EMPTY(Options->mBrws_Hr1),NIL,Var(BRWS_HR1_,Options->mBrws_Hr1))
  299.    IF(EMPTY(Options->mBrws_Hl2),NIL,Var(BRWS_HL2_,Options->mBrws_Hl2))
  300.    IF(EMPTY(Options->mBrws_Hr2),NIL,Var(BRWS_HR2_,Options->mBrws_Hr2))
  301.    IF(EMPTY(Options->mHlgt_Clr),NIL,Var(HLGT_CLR_,Options->mHlgt_Clr))
  302. ENDIF
  303.  
  304. Var(WMSG_CLR_,Var(WMSG_CLR_)+","+Var(WGET_CLR_)+",,,"+Var(WREV_CLR_))
  305. Var(WERR_CLR_,Var(WERR_CLR_)+","+Var(WGET_CLR_)+",,,"+Var(WREV_CLR_))
  306. Var(WNDW_CLR_,Var(WNDW_CLR_)+","+Var(WGET_CLR_)+",,,"+Var(WREV_CLR_))
  307.  
  308. Var(BRWS_CLR_,Var(BRWS_CLR_)+","+Var(BRWS_REV_))
  309. Var(BRWS_HL1_,Var(BRWS_HL1_)+","+Var(BRWS_HR1_))
  310. Var(BRWS_HL2_,Var(BRWS_HL2_)+","+Var(BRWS_HR2_))
  311. Var(MENU_CLR_,Var(MENU_CLR_)+","+Var(MENU_REV_))
  312.  
  313. Var(ERR_CLR_,Var(ERR_CLR_)+","+Var(WREV_CLR_))
  314. Var(HELP_CLR_,Var(HELP_CLR_)+","+Var(WREV_CLR_))
  315.  
  316. ** set up defaults from OPTIONS.DBF **
  317. cSys_Name := ALLTRIM(Options->Sys_Name)
  318. cAppl_Name := ALLTRIM(Options->Appl_Name)
  319. cPrt_Port := Options->Prt_Port
  320. IF !EMPTY(cPrt_Port)
  321.    SET(_SET_PRINTFILE,"LPT"+cPrt_Port)
  322. ENDIF
  323. Var(NETWORK,(Options->NtWrk="Y"))       // tell library if shared environment
  324. Var(XPLODE,(Options->wXPlde="Y"))       // tell library if exploding windows
  325. lHelp_Edit := (Options->Help_Edit="Y")       // Allow/Disallow Editting of Help File
  326. lHelp_On := (Options->Help_On="Y")           // set to .T. if Help System On
  327.                                         // or .F. to Turn Off.
  328. nHMax_Lins := Options->HMax_Lins             // max lines editable if QHELP_EDIT is
  329. cScrn_Hdr := Options->Scrn_Hdr               // max lines editable if QHELP_EDIT is
  330.                                         // .T.
  331. ** User Defined Defaults from OPTIONS.DBF **
  332. qScrn_Hdr := Options->Scrn_Hdr
  333. qDsk_Chr := Options->Dsk_Chr
  334. qMsg_Lin := Options->Msg_Lin
  335. qTsttxt := Options->Tsttxt
  336. qReset := Options->Reset
  337. qCmprs := Options->Cmprs
  338. qLndcmp := Options->Lndcmp
  339. //Options->(DBCLOSEAREA())                // close OPTIONS.DBF
  340.  
  341. ************************** Display Background Screen **************************
  342. DISPBOX(00,00,MAXROW(),MAXCOL(),REPLICATE(CHR(176),9),Var(BKGD_CLR_))
  343.  
  344. ** Display Company/System Name in Screen Header Box **
  345. SETCOLOR(Var(HDR_CLR_))
  346. @ 00,00,03,79 WINDOW NOSHADOW NOSAVE
  347. Message(" F1-Help ",00,70,00,Var(HDR_CLR_))
  348. Center(cSys_Name,01,01,78,Var(HDR_MSG_))
  349. Center(cAppl_Name,02,01,78,Var(HDR_MSG_))
  350.  
  351. ** Turn on Mouse Awareness **
  352. MouseInit(330)                 //KP_ALT_MINUS
  353.  
  354. ************************* Open All Application Files **************************
  355.  
  356. ** Verify Existence of All Application Indexes and Create if Missing **
  357. ChkNtxs()
  358.  
  359. ** Open All System Files and Indexes **
  360. OpenFiles()
  361. DbInit1()
  362.  
  363. *******************************************************************************
  364. ** Main Program Loop - Calls Root Menu                                       **
  365. *******************************************************************************
  366. SETKEY(K_F1,{||ABHelp()})
  367. AddMPad(00,71,00,77,0,{||Kybd(CHR(K_F1))},TRUE)
  368. DO WHILE .T.
  369.    RootMenu()
  370.    SetMsgLin("▓ Press Y-Yes or N-No ▓")
  371.    IF MsgBox("Exit System?",Var(BRWS_CLR_),,{"< Yes >","< No >"}) == 1
  372.       EXIT
  373.    ENDIF
  374. ENDDO
  375.  
  376. *************************** Clean Up and Exit to OS ***************************
  377. SETCOLOR(Var(BRWS_CLR_))
  378. @ 10,29,14,51 WINDOW STYLE "3+"
  379. @ 02,03 WINSAY "Closing Files..."
  380. DBCLOSEALL()
  381. SETCOLOR("W/N")
  382. SETCURSOR(SC_NORMAL)
  383. CLEAR
  384. QUIT
  385.  
  386. *******************************************************************************
  387. ** >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Menuing Sytem <<<<<<<<<<<<<<<<<<<<<<<<<<<<< **
  388. *******************************************************************************
  389.  
  390. *******************************************************************************
  391. ** ROOT MENU OF MENUING SYSTEM                                               **
  392. *******************************************************************************
  393. PROCEDURE RootMenu()
  394.    LOCAL aMenuArray := {}
  395.    LOCAL nOpt
  396.  
  397.    SETCOLOR(Var(MENU_CLR_))
  398.    @ 03,00,03,79 WINDOW STYLE "  " NOSHADOW
  399.    VarPush("MENU001")
  400.  
  401.    nOpt=0
  402.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  403.    SETCOLOR(Var(MENU_CLR_))
  404.  
  405.    @ 00,01 WINPROMPT " About Builder " TO aMenuArray EXECUTE Menu002()
  406.    @ 00,16 WINPROMPT " About Breport " TO aMenuArray EXECUTE Menu007()
  407.    @ 00,31 WINPROMPT " Library Functions " TO aMenuArray EXECUTE Menu009()
  408.  
  409.    nOpt := Menu(aMenuArray,nOpt)
  410.  
  411.    VarPop()
  412.    WINDOW REMOVE
  413.  
  414. *******************************************************************************
  415. ** CALLED BY: Root Menu Selection << About Builder >>                        **
  416. **   Comment: Builder Menu                                                   **
  417. *******************************************************************************
  418. PROCEDURE Menu002()
  419.    LOCAL aMenuArray := {}
  420.    LOCAL nOpt1
  421.  
  422.    SETCOLOR(Var(MENU_CLR_))
  423.    @ 04,01,15,20 WINDOW STYLE "--" NOSHADOW
  424.    VarPush("MENU002")
  425.  
  426.    nOpt1=0
  427.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  428.    SETCOLOR(Var(MENU_CLR_))
  429.  
  430.    @ 01,01 WINPROMPT " Description      " TO aMenuArray EXECUTE Hand150()
  431.    @ 02,00 WINSAY "├──────────────────┤"
  432.    @ 03,01 WINPROMPT " Menus            " TO aMenuArray EXECUTE Menu006()
  433.    @ 04,01 WINPROMPT " Dialogs          " TO aMenuArray EXECUTE Menu005()
  434.    @ 05,01 WINPROMPT " Picklists        " TO aMenuArray EXECUTE Menu003()
  435.    @ 06,01 WINPROMPT " File Maintenance " TO aMenuArray EXECUTE Menu004()
  436.    @ 07,01 WINPROMPT " TBrowse          " TO aMenuArray EXECUTE Menu147()
  437.    @ 08,00 WINSAY "├──────────────────┤"
  438.    @ 09,01 WINPROMPT " BMOUSE.OBJ       " TO aMenuArray EXECUTE Menu008()
  439.    @ 10,01 WINPROMPT " Incentives       " TO aMenuArray EXECUTE Hand138()
  440.  
  441.    TtlKeyOn()                 // enable left/right menu movement
  442.    nOpt1 := Menu(aMenuArray,nOpt1)
  443.    TtlKeyOff()                // disable left/right menu movement
  444.  
  445.    VarPop()
  446.    WINDOW REMOVE
  447.  
  448. *******************************************************************************
  449. ** CALLED BY: Selection << Picklists >> in Proc:  MENU002                    **
  450. **   Comment: Picklist Menu                                                  **
  451. *******************************************************************************
  452. PROCEDURE Menu003()
  453.    LOCAL aMenuArray := {}
  454.    LOCAL nOpt2
  455.  
  456.    SETCOLOR(Var(MENU_CLR_))
  457.    @ 09,20,15,43 WINDOW STYLE "--" NOSHADOW
  458.    VarPush("MENU003")
  459.  
  460.    nOpt2=0
  461.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  462.    SETCOLOR(Var(MENU_CLR_))
  463.  
  464.    @ 01,01 WINPROMPT " Description          " TO aMenuArray EXECUTE Hand024()
  465.    @ 02,01 WINPROMPT " No Options           " TO aMenuArray EXECUTE Hand102()
  466.    @ 03,01 WINPROMPT " Bounded by Option    " TO aMenuArray EXECUTE Dlog028()
  467.    @ 04,01 WINPROMPT " QWERTY Scroll Option " TO aMenuArray EXECUTE Hand103()
  468.    @ 05,01 WINPROMPT " Lateral Scrolling    " TO aMenuArray EXECUTE Dlog128()
  469.  
  470.    nOpt2 := Menu(aMenuArray,nOpt2)
  471.  
  472.    VarPop()
  473.    WINDOW REMOVE
  474.  
  475. *******************************************************************************
  476. ** CALLED BY: Selection << File Maintenance >> in Proc:  MENU002             **
  477. **   Comment: File Maintenance Menu                                          **
  478. *******************************************************************************
  479. PROCEDURE Menu004()
  480.    LOCAL aMenuArray := {}
  481.    LOCAL nOpt2
  482.  
  483.    SETCOLOR(Var(MENU_CLR_))
  484.    @ 10,20,13,34 WINDOW STYLE "--" NOSHADOW
  485.    VarPush("MENU004")
  486.  
  487.    nOpt2=0
  488.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  489.    SETCOLOR(Var(MENU_CLR_))
  490.  
  491.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand025()
  492.    @ 02,01 WINPROMPT " Sample      " TO aMenuArray EXECUTE Hand104()
  493.  
  494.    nOpt2 := Menu(aMenuArray,nOpt2)
  495.  
  496.    VarPop()
  497.    WINDOW REMOVE
  498.  
  499. *******************************************************************************
  500. ** CALLED BY: Selection << Dialogs >> in Proc:  MENU002                      **
  501. **   Comment: Dialogs Menu                                                   **
  502. *******************************************************************************
  503. PROCEDURE Menu005()
  504.    LOCAL aMenuArray := {}
  505.    LOCAL nOpt2
  506.  
  507.    SETCOLOR(Var(MENU_CLR_))
  508.    @ 08,20,11,34 WINDOW STYLE "--" NOSHADOW
  509.    VarPush("MENU005")
  510.  
  511.    nOpt2=0
  512.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  513.    SETCOLOR(Var(MENU_CLR_))
  514.  
  515.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand023()
  516.    @ 02,01 WINPROMPT " Show Dialog " TO aMenuArray EXECUTE Dlog035()
  517.  
  518.    nOpt2 := Menu(aMenuArray,nOpt2)
  519.  
  520.    VarPop()
  521.    WINDOW REMOVE
  522.  
  523. *******************************************************************************
  524. ** CALLED BY: Selection << Menus >> in Proc:  MENU002                        **
  525. **   Comment: Menus Menu                                                     **
  526. *******************************************************************************
  527. PROCEDURE Menu006()
  528.    LOCAL aMenuArray := {}
  529.    LOCAL nOpt2
  530.  
  531.    SETCOLOR(Var(MENU_CLR_))
  532.    @ 07,20,09,34 WINDOW STYLE "--" NOSHADOW
  533.    VarPush("MENU006")
  534.  
  535.    nOpt2=0
  536.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  537.    SETCOLOR(Var(MENU_CLR_))
  538.  
  539.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand022()
  540.  
  541.    nOpt2 := Menu(aMenuArray,nOpt2)
  542.  
  543.    VarPop()
  544.    WINDOW REMOVE
  545.  
  546. *******************************************************************************
  547. ** CALLED BY: Root Menu Selection << About Breport >>                        **
  548. **   Comment: Breport Menu                                                   **
  549. *******************************************************************************
  550. PROCEDURE Menu007()
  551.    LOCAL aMenuArray := {}
  552.    LOCAL nOpt1
  553.  
  554.    SETCOLOR(Var(MENU_CLR_))
  555.    @ 04,16,06,30 WINDOW STYLE "--" NOSHADOW
  556.    VarPush("MENU007")
  557.  
  558.    nOpt1=0
  559.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  560.    SETCOLOR(Var(MENU_CLR_))
  561.  
  562.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand039()
  563.  
  564.    TtlKeyOn()                 // enable left/right menu movement
  565.    nOpt1 := Menu(aMenuArray,nOpt1)
  566.    TtlKeyOff()                // disable left/right menu movement
  567.  
  568.    VarPop()
  569.    WINDOW REMOVE
  570.  
  571. *******************************************************************************
  572. ** CALLED BY: Selection << BMOUSE.OBJ >> in Proc:  MENU002                   **
  573. **   Comment: BMOUSE Menu                                                    **
  574. *******************************************************************************
  575. PROCEDURE Menu008()
  576.    LOCAL aMenuArray := {}
  577.    LOCAL nOpt2
  578.  
  579.    SETCOLOR(Var(MENU_CLR_))
  580.    @ 13,20,15,34 WINDOW STYLE "--" NOSHADOW
  581.    VarPush("MENU008")
  582.  
  583.    nOpt2=0
  584.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  585.    SETCOLOR(Var(MENU_CLR_))
  586.  
  587.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand026()
  588.  
  589.    nOpt2 := Menu(aMenuArray,nOpt2)
  590.  
  591.    VarPop()
  592.    WINDOW REMOVE
  593.  
  594. *******************************************************************************
  595. ** CALLED BY: Root Menu Selection << Library Functions >>                    **
  596. **   Comment: Library Menu                                                   **
  597. *******************************************************************************
  598. PROCEDURE Menu009()
  599.    LOCAL aMenuArray := {}
  600.    LOCAL nOpt1
  601.  
  602.    SETCOLOR(Var(MENU_CLR_))
  603.    @ 04,31,16,45 WINDOW STYLE "--" NOSHADOW
  604.    VarPush("MENU009")
  605.  
  606.    nOpt1=0
  607.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  608.    SETCOLOR(Var(MENU_CLR_))
  609.  
  610.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand040()
  611.    @ 02,01 WINPROMPT " Screen      " TO aMenuArray EXECUTE Menu017()
  612.    @ 03,01 WINPROMPT " Database    " TO aMenuArray EXECUTE Menu016()
  613.    @ 04,01 WINPROMPT " Valid       " TO aMenuArray EXECUTE Menu015()
  614.    @ 05,01 WINPROMPT " DOS         " TO aMenuArray EXECUTE Menu014()
  615.    @ 06,01 WINPROMPT " Text Files  " TO aMenuArray EXECUTE Menu013()
  616.    @ 07,01 WINPROMPT " Memo        " TO aMenuArray EXECUTE Menu012()
  617.    @ 08,01 WINPROMPT " Control     " TO aMenuArray EXECUTE Menu011()
  618.    @ 09,01 WINPROMPT " Conversion  " TO aMenuArray EXECUTE Menu010()
  619.    @ 10,01 WINPROMPT " Mouse       " TO aMenuArray EXECUTE Menu019()
  620.    @ 11,01 WINPROMPT " Other       " TO aMenuArray EXECUTE Menu018()
  621.  
  622.    TtlKeyOn()                 // enable left/right menu movement
  623.    nOpt1 := Menu(aMenuArray,nOpt1)
  624.    TtlKeyOff()                // disable left/right menu movement
  625.  
  626.    VarPop()
  627.    WINDOW REMOVE
  628.  
  629. *******************************************************************************
  630. ** CALLED BY: Selection << Conversion >> in Proc:  MENU009                   **
  631. **   Comment: Conversion Menu                                                **
  632. *******************************************************************************
  633. PROCEDURE Menu010()
  634.    LOCAL aMenuArray := {}
  635.    LOCAL nOpt2
  636.  
  637.    SETCOLOR(Var(MENU_CLR_))
  638.    @ 13,45,18,59 WINDOW STYLE "--" NOSHADOW
  639.    VarPush("MENU010")
  640.  
  641.    nOpt2=0
  642.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  643.    SETCOLOR(Var(MENU_CLR_))
  644.  
  645.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand114()
  646.    @ 02,01 WINPROMPT " Hex2Dec()   " TO aMenuArray EXECUTE Dlog115()
  647.    @ 03,01 WINPROMPT " Dec2Hex()   " TO aMenuArray EXECUTE Dlog117()
  648.    @ 04,01 WINPROMPT " Asc2Bin()   " TO aMenuArray EXECUTE Dlog125()
  649.  
  650.    nOpt2 := Menu(aMenuArray,nOpt2)
  651.  
  652.    VarPop()
  653.    WINDOW REMOVE
  654.  
  655. *******************************************************************************
  656. ** CALLED BY: Selection << Control >> in Proc:  MENU009                      **
  657. **   Comment: Control Menu                                                   **
  658. *******************************************************************************
  659. PROCEDURE Menu011()
  660.    LOCAL aMenuArray := {}
  661.    LOCAL nOpt2
  662.  
  663.    SETCOLOR(Var(MENU_CLR_))
  664.    @ 12,45,16,70 WINDOW STYLE "--" NOSHADOW
  665.    VarPush("MENU011")
  666.  
  667.    nOpt2=0
  668.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  669.    SETCOLOR(Var(MENU_CLR_))
  670.  
  671.    @ 01,01 WINPROMPT " Description            " TO aMenuArray EXECUTE Hand109()
  672.    @ 02,01 WINPROMPT " TimeOut()              " TO aMenuArray EXECUTE Dlog111()
  673.    @ 03,01 WINPROMPT " TtlKeyOn()/TtlKeyOff() " TO aMenuArray EXECUTE Dlog110()
  674.  
  675.    nOpt2 := Menu(aMenuArray,nOpt2)
  676.  
  677.    VarPop()
  678.    WINDOW REMOVE
  679.  
  680. *******************************************************************************
  681. ** CALLED BY: Selection << Memo >> in Proc:  MENU009                         **
  682. **   Comment: Memo Menu                                                      **
  683. *******************************************************************************
  684. PROCEDURE Menu012()
  685.    LOCAL aMenuArray := {}
  686.    LOCAL nOpt2
  687.  
  688.    SETCOLOR(Var(MENU_CLR_))
  689.    @ 11,45,15,59 WINDOW STYLE "--" NOSHADOW
  690.    VarPush("MENU012")
  691.  
  692.    nOpt2=0
  693.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  694.    SETCOLOR(Var(MENU_CLR_))
  695.  
  696.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand088()
  697.    @ 02,01 WINPROMPT " Edt_Memo()  " TO aMenuArray EXECUTE Dlog106()
  698.    @ 03,01 WINPROMPT " Show_Memo() " TO aMenuArray EXECUTE Dlog108()
  699.  
  700.    nOpt2 := Menu(aMenuArray,nOpt2)
  701.  
  702.    VarPop()
  703.    WINDOW REMOVE
  704.  
  705. *******************************************************************************
  706. ** CALLED BY: Selection << Text Files >> in Proc:  MENU009                   **
  707. **   Comment: Text Menu                                                      **
  708. *******************************************************************************
  709. PROCEDURE Menu013()
  710.    LOCAL aMenuArray := {}
  711.    LOCAL nOpt2
  712.  
  713.    SETCOLOR(Var(MENU_CLR_))
  714.    @ 10,45,16,59 WINDOW STYLE "--" NOSHADOW
  715.    VarPush("MENU013")
  716.  
  717.    nOpt2=0
  718.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  719.    SETCOLOR(Var(MENU_CLR_))
  720.  
  721.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand087()
  722.    @ 02,01 WINPROMPT " fEof()      " TO aMenuArray EXECUTE Dlog098()
  723.    @ 03,01 WINPROMPT " fGets()     " TO aMenuArray EXECUTE Dlog099()
  724.    @ 04,01 WINPROMPT " fGetsR()    " TO aMenuArray EXECUTE Dlog100()
  725.    @ 05,01 WINPROMPT " TextView()  " TO aMenuArray EXECUTE Dlog101()
  726.  
  727.    nOpt2 := Menu(aMenuArray,nOpt2)
  728.  
  729.    VarPop()
  730.    WINDOW REMOVE
  731.  
  732. *******************************************************************************
  733. ** CALLED BY: Selection << DOS >> in Proc:  MENU009                          **
  734. **   Comment: DOS Menu                                                       **
  735. *******************************************************************************
  736. PROCEDURE Menu014()
  737.    LOCAL aMenuArray := {}
  738.    LOCAL nOpt2
  739.  
  740.    SETCOLOR(Var(MENU_CLR_))
  741.    @ 09,45,16,59 WINDOW STYLE "--" NOSHADOW
  742.    VarPush("MENU014")
  743.  
  744.    nOpt2=0
  745.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  746.    SETCOLOR(Var(MENU_CLR_))
  747.  
  748.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand086()
  749.    @ 02,01 WINPROMPT " ChgDir()    " TO aMenuArray EXECUTE Dlog089()
  750.    @ 03,01 WINPROMPT " ChgDsk()    " TO aMenuArray EXECUTE Dlog091()
  751.    @ 04,01 WINPROMPT " MakDir()    " TO aMenuArray EXECUTE Dlog092()
  752.    @ 05,01 WINPROMPT " InPath()    " TO aMenuArray EXECUTE Dlog094()
  753.    @ 06,01 WINPROMPT " MaxHndls()  " TO aMenuArray EXECUTE Dlog096()
  754.  
  755.    nOpt2 := Menu(aMenuArray,nOpt2)
  756.  
  757.    VarPop()
  758.    WINDOW REMOVE
  759.  
  760. *******************************************************************************
  761. ** CALLED BY: Selection << Valid >> in Proc:  MENU009                        **
  762. **   Comment: Valid Menu                                                     **
  763. *******************************************************************************
  764. PROCEDURE Menu015()
  765.    LOCAL aMenuArray := {}
  766.    LOCAL nOpt2
  767.  
  768.    SETCOLOR(Var(MENU_CLR_))
  769.    @ 08,45,18,59 WINDOW STYLE "--" NOSHADOW
  770.    VarPush("MENU015")
  771.  
  772.    nOpt2=0
  773.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  774.    SETCOLOR(Var(MENU_CLR_))
  775.  
  776.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand085()
  777.    @ 02,01 WINPROMPT " Show_Text() " TO aMenuArray EXECUTE Dlog077()
  778.    @ 03,01 WINPROMPT " PckVld()    " TO aMenuArray EXECUTE Dlog075()
  779.    @ 04,01 WINPROMPT " ChkChr()    " TO aMenuArray EXECUTE Dlog076()
  780.    @ 05,01 WINPROMPT " InFile()    " TO aMenuArray EXECUTE Dlog078()
  781.    @ 06,01 WINPROMPT " DupChk()    " TO aMenuArray EXECUTE Dlog079()
  782.    @ 07,01 WINPROMPT " GenVld()    " TO aMenuArray EXECUTE Dlog080()
  783.    @ 08,01 WINPROMPT " Req()       " TO aMenuArray EXECUTE Dlog081()
  784.    @ 09,01 WINPROMPT " Rght_Jst()  " TO aMenuArray EXECUTE Dlog083()
  785.  
  786.    nOpt2 := Menu(aMenuArray,nOpt2)
  787.  
  788.    VarPop()
  789.    WINDOW REMOVE
  790.  
  791. *******************************************************************************
  792. ** CALLED BY: Selection << Database >> in Proc:  MENU009                     **
  793. **   Comment: Database Menu                                                  **
  794. *******************************************************************************
  795. PROCEDURE Menu016()
  796.    LOCAL aMenuArray := {}
  797.    LOCAL nOpt2
  798.  
  799.    SETCOLOR(Var(MENU_CLR_))
  800.    @ 07,45,17,59 WINDOW STYLE "--" NOSHADOW
  801.    VarPush("MENU016")
  802.  
  803.    nOpt2=0
  804.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  805.    SETCOLOR(Var(MENU_CLR_))
  806.  
  807.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand055()
  808.    @ 02,01 WINPROMPT " Gen_Maint() " TO aMenuArray EXECUTE Dlog057()
  809.    @ 03,01 WINPROMPT " Rel_Maint() " TO aMenuArray EXECUTE Dlog059()
  810.    @ 04,01 WINPROMPT " Plist()     " TO aMenuArray EXECUTE Dlog069()
  811.    @ 05,01 WINPROMPT " Browser()   " TO aMenuArray EXECUTE Dlog070()
  812.    @ 06,01 WINPROMPT " Save_It()   " TO aMenuArray EXECUTE Dlog072()
  813.    @ 07,01 WINPROMPT " Fld_Repl()  " TO aMenuArray EXECUTE Dlog073()
  814.    @ 08,01 WINPROMPT " iSeek()     " TO aMenuArray EXECUTE Dlog074()
  815.    @ 09,01 WINPROMPT " Open_Fil()  " TO aMenuArray EXECUTE Dlog082()
  816.  
  817.    nOpt2 := Menu(aMenuArray,nOpt2)
  818.  
  819.    VarPop()
  820.    WINDOW REMOVE
  821.  
  822. *******************************************************************************
  823. ** CALLED BY: Selection << Screen >> in Proc:  MENU009                       **
  824. **   Comment: Screen Menu                                                    **
  825. *******************************************************************************
  826. PROCEDURE Menu017()
  827.    LOCAL aMenuArray := {}
  828.    LOCAL nOpt2
  829.  
  830.    SETCOLOR(Var(MENU_CLR_))
  831.    @ 06,45,19,68 WINDOW STYLE "--" NOSHADOW
  832.    VarPush("MENU017")
  833.  
  834.    nOpt2=0
  835.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  836.    SETCOLOR(Var(MENU_CLR_))
  837.  
  838.    @ 01,01 WINPROMPT " Description          " TO aMenuArray EXECUTE Hand054()
  839.    @ 02,01 WINPROMPT " WinPush()/WinPop()   " TO aMenuArray EXECUTE Dlog041()
  840.    @ 03,01 WINPROMPT " Center()             " TO aMenuArray EXECUTE Dlog042()
  841.    @ 04,01 WINPROMPT " Message()            " TO aMenuArray EXECUTE Dlog044()
  842.    @ 05,01 WINPROMPT " MsgBox()             " TO aMenuArray EXECUTE Menu046()
  843.    @ 06,01 WINPROMPT " SetMsgLin()          " TO aMenuArray EXECUTE Dlog051()
  844.    @ 07,01 WINPROMPT " Thermometr()         " TO aMenuArray EXECUTE Dlog052()
  845.    @ 08,01 WINPROMPT " AddPrompt()/AbMenu() " TO aMenuArray EXECUTE Dlog064()
  846.    @ 09,01 WINPROMPT " Ask()                " TO aMenuArray EXECUTE Dlog065()
  847.    @ 10,01 WINPROMPT " AskMenu()            " TO aMenuArray EXECUTE Dlog067()
  848.    @ 11,01 WINPROMPT " aPop()               " TO aMenuArray EXECUTE Hand134()
  849.    @ 12,01 WINPROMPT " GetEdit()            " TO aMenuArray EXECUTE Dlog141()
  850.  
  851.    nOpt2 := Menu(aMenuArray,nOpt2)
  852.  
  853.    VarPop()
  854.    WINDOW REMOVE
  855.  
  856. *******************************************************************************
  857. ** CALLED BY: Selection << Other >> in Proc:  MENU009                        **
  858. **   Comment: Other Lib Funcs Menu                                           **
  859. *******************************************************************************
  860. PROCEDURE Menu018()
  861.    LOCAL aMenuArray := {}
  862.    LOCAL nOpt2
  863.  
  864.    SETCOLOR(Var(MENU_CLR_))
  865.    @ 15,45,22,59 WINDOW STYLE "--" NOSHADOW
  866.    VarPush("MENU018")
  867.  
  868.    nOpt2=0
  869.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  870.    SETCOLOR(Var(MENU_CLR_))
  871.  
  872.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand120()
  873.    @ 02,01 WINPROMPT " ErrTone()   " TO aMenuArray EXECUTE Dlog121()
  874.    @ 03,01 WINPROMPT " WaitKey()   " TO aMenuArray EXECUTE Dlog122()
  875.    @ 04,01 WINPROMPT " Between()   " TO aMenuArray EXECUTE Dlog131()
  876.    @ 05,01 WINPROMPT " Numeric()   " TO aMenuArray EXECUTE Dlog132()
  877.    @ 06,01 WINPROMPT " DbState()   " TO aMenuArray EXECUTE Dlog135()
  878.  
  879.    nOpt2 := Menu(aMenuArray,nOpt2)
  880.  
  881.    VarPop()
  882.    WINDOW REMOVE
  883.  
  884. *******************************************************************************
  885. ** CALLED BY: Selection << Mouse >> in Proc:  MENU009                        **
  886. **   Comment: Mouse Lib Funcs Menu                                           **
  887. *******************************************************************************
  888. PROCEDURE Menu019()
  889.    LOCAL aMenuArray := {}
  890.    LOCAL nOpt2
  891.  
  892.    SETCOLOR(Var(MENU_CLR_))
  893.    @ 14,45,19,67 WINDOW STYLE "--" NOSHADOW
  894.    VarPush("MENU019")
  895.  
  896.    nOpt2=0
  897.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  898.    SETCOLOR(Var(MENU_CLR_))
  899.  
  900.    @ 01,01 WINPROMPT " Description         " TO aMenuArray EXECUTE Hand119()
  901.    @ 02,01 WINPROMPT " MouseInit()         " TO aMenuArray EXECUTE Dlog136()
  902.    @ 03,01 WINPROMPT " SetMouse()          " TO aMenuArray EXECUTE Dlog137()
  903.    @ 04,01 WINPROMPT " AddMPad()/DelMPad() " TO aMenuArray EXECUTE Dlog126()
  904.  
  905.    nOpt2 := Menu(aMenuArray,nOpt2)
  906.  
  907.    VarPop()
  908.    WINDOW REMOVE
  909.  
  910. *******************************************************************************
  911. ** CALLED BY: Selection << MsgBox() >> in Proc:  MENU017                     **
  912. **   Comment: MsgBox() Menu                                                  **
  913. *******************************************************************************
  914. PROCEDURE Menu046()
  915.    LOCAL aMenuArray := {}
  916.    LOCAL nOpt3
  917.  
  918.    SETCOLOR(Var(MENU_CLR_))
  919.    @ 11,68,16,77 WINDOW STYLE "--" NOSHADOW
  920.    VarPush("MENU046")
  921.  
  922.    nOpt3=0
  923.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  924.    SETCOLOR(Var(MENU_CLR_))
  925.  
  926.    @ 01,01 WINPROMPT " Plain  " TO aMenuArray EXECUTE Hand047()
  927.    @ 02,01 WINPROMPT " Array  " TO aMenuArray EXECUTE Hand048()
  928.    @ 03,01 WINPROMPT " Menu   " TO aMenuArray EXECUTE Hand049()
  929.    @ 04,01 WINPROMPT " Prompt " TO aMenuArray EXECUTE Hand050()
  930.  
  931.    nOpt3 := Menu(aMenuArray,nOpt3)
  932.  
  933.    VarPop()
  934.    WINDOW REMOVE
  935.  
  936. *******************************************************************************
  937. ** CALLED BY: Selection << TBrowse >> in Proc:  MENU002                      **
  938. **   Comment: TBrowse Menu                                                   **
  939. *******************************************************************************
  940. PROCEDURE Menu147()
  941.    LOCAL aMenuArray := {}
  942.    LOCAL nOpt2
  943.  
  944.    SETCOLOR(Var(MENU_CLR_))
  945.    @ 11,20,14,34 WINDOW STYLE "--" NOSHADOW
  946.    VarPush("MENU147")
  947.  
  948.    nOpt2=0
  949.    SetMsgLin("▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  950.    SETCOLOR(Var(MENU_CLR_))
  951.  
  952.    @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE Hand148()
  953.    @ 02,01 WINPROMPT " Sample      " TO aMenuArray EXECUTE Hand149()
  954.  
  955.    nOpt2 := Menu(aMenuArray,nOpt2)
  956.  
  957.    VarPop()
  958.    WINDOW REMOVE
  959.  
  960. ************************* ENDMENU End of Menu System **************************
  961.  
  962. *******************************************************************************
  963. ** >>>>>>>>>>>>>>>>>>>>>>>>>> Hand Coded by User <<<<<<<<<<<<<<<<<<<<<<<<<<< **
  964. *******************************************************************************
  965.  
  966. *******************************************************************************
  967. ** CALLED BY: Dialog Window:  DLOG020   Builder Desc Text File View          **
  968. **   Comment: View BDEMO001.TXT                                              **
  969. *******************************************************************************
  970. FUNCTION Hand021(cViewFile)   // declaring Hand021 will be replace with
  971.                                // Handnnn() in the program
  972.    LOCAL cOldClr,nUpIdx,nDnIdx,nRtIdx,nLfIdx
  973.    LOCAL nDr1 := WinTop()
  974.    LOCAL nDc1 := WinLeft()
  975.    LOCAL nDr2 := WinBott()
  976.    LOCAL nDc2 := WinRight()
  977.    STATIC cTextDir
  978.  
  979.    IF cViewFile == NIL ; cViewFile := "BDEMO001.TXT" ; ENDIF
  980.    IF cTextDir == NIL
  981.       cTextDir := "\" + CURDIR() + "\"
  982.    ENDIF
  983.  
  984.    IF !FILE(cTextDir + cViewFile)
  985.       ErrTone()
  986.       MsgBox("ERROR: File "+cViewFile+" is Missing!")
  987.       RETURN(FALSE)
  988.    ENDIF
  989.  
  990.    SetMsgLin("▓ Arrows/PgUp/PgDn-Scroll ▓ Alt+P-Print"+ ;
  991.              "▓ ESC-Exit ▓")
  992.    cOldClr := SETCOLOR(AbVar(WMSG_CLR_))
  993.  
  994.    // Set up mouse pads on window borders
  995.    nUpIdx := AddMPad(nDr1,nDc1,nDr1,nDc2,1,{||__KEYBOARD(CHR(K_UP))})
  996.    nDnIdx := AddMPad(nDr2,nDc1,nDr2,nDc2,1,{||__KEYBOARD(CHR(K_DOWN))})
  997.    nLfIdx := AddMPad(nDr1,nDc1,nDr2,nDc1,1,{||__KEYBOARD(CHR(K_LEFT))})
  998.    nRtIdx := AddMPad(nDr1,nDc2,nDr2,nDc2,1,{||__KEYBOARD(CHR(K_RIGHT))})
  999.  
  1000.    TextView(nDr1+1,nDc1+1,nDr2-1,nDc2-1,cTextDir + cViewFile,.t.)
  1001.  
  1002.    // Remove mouse pads
  1003.    DelMPad(nUpIdx)
  1004.    DelMPad(nDnIdx)
  1005.    DelMPad(nLfIdx)
  1006.    DelMPad(nRtIdx)
  1007.  
  1008.    SETCOLOR(cOldClr)
  1009.    RETURN(TRUE)
  1010.  
  1011. *******************************************************************************
  1012. ** CALLED BY: Selection << Description >> in Proc:  MENU006                  **
  1013. **   Comment: View BDEMO002.TXT (Menus)                                      **
  1014. *******************************************************************************
  1015. PROCEDURE Hand022()
  1016.    Dlog020("BDEMO002.TXT")
  1017.    RETURN
  1018.  
  1019. *******************************************************************************
  1020. ** CALLED BY: Selection << Description >> in Proc:  MENU005                  **
  1021. **   Comment: View BDEMO003.TXT (Dialogs)                                    **
  1022. *******************************************************************************
  1023. PROCEDURE Hand023()
  1024.    Dlog020("BDEMO003.TXT")
  1025.    RETURN
  1026.  
  1027. *******************************************************************************
  1028. ** CALLED BY: Selection << Description >> in Proc:  MENU003                  **
  1029. **   Comment: View BDEMO004.TXT (PickLists)                                  **
  1030. *******************************************************************************
  1031. PROCEDURE Hand024()
  1032.    Dlog020("BDEMO004.TXT")
  1033.    RETURN
  1034.  
  1035. *******************************************************************************
  1036. ** CALLED BY: Selection << Description >> in Proc:  MENU004                  **
  1037. **   Comment: View BDEMO005.TXT (F Maint)                                    **
  1038. *******************************************************************************
  1039. PROCEDURE Hand025()
  1040.    Dlog020("BDEMO005.TXT")
  1041.    RETURN
  1042.  
  1043. *******************************************************************************
  1044. ** CALLED BY: Selection << Description >> in Proc:  MENU008                  **
  1045. **   Comment: View BDEMO006.TXT (bMouse)                                     **
  1046. *******************************************************************************
  1047. PROCEDURE Hand026()
  1048.    Dlog020("BDEMO006.TXT")
  1049.    RETURN
  1050.  
  1051. *******************************************************************************
  1052. ** CALLED BY: Pick List Window:  PLST030   QWERTY Picklist Sample            **
  1053. **   Comment: QWERTY Picklist Selection                                      **
  1054. *******************************************************************************
  1055. PROCEDURE Hand031()
  1056.    MsgBox("You Selected City: "+Cities->City,AbVar(MSG_CLR_))
  1057.    RETURN
  1058.  
  1059. *******************************************************************************
  1060. ** CALLED BY: Pick List Window:  PLST027   No Options Picklist               **
  1061. **   Comment: No Opts Picklist Selection                                     **
  1062. *******************************************************************************
  1063. PROCEDURE Hand032()
  1064.    MsgBox("You Selected City: "+Cities->City,AbVar(MSG_CLR_))
  1065.    RETURN
  1066.  
  1067. *******************************************************************************
  1068. ** CALLED BY: Pick List Window:  PLST029   Picklist Bounded by Sample        **
  1069. **   Comment: Bounded Picklist Selection                                     **
  1070. *******************************************************************************
  1071. PROCEDURE Hand033()
  1072.    MsgBox("You Selected City: "+Cities->City,AbVar(MSG_CLR_))
  1073.    RETURN
  1074.  
  1075. *******************************************************************************
  1076. ** CALLED BY: Dialog Window:  DLOG035   Dialog Sample                        **
  1077. **   Comment: Dialog Prompt                                                  **
  1078. *******************************************************************************
  1079. PROCEDURE Hand036()
  1080.    LOCAL p := "Ready to Start? ",a := {"Yes","No"}
  1081.    LOCAL nDr1 := WinTop()
  1082.    LOCAL nDc1 := WinLeft()
  1083.    LOCAL nDr2 := WinBott()
  1084.    LOCAL nDc2 := WinRight()
  1085.  
  1086.    // Present Prompt, Return to Previous Window Unless "Yes" is Selected
  1087.    SetMsgLin("▓ Press Y-Yes or N-No ▓")
  1088.    IF AskMenu(p,a,nDr2-1,nDc1+2,,nDc2-nDc1-3,AbVar(WMSG_CLR_)) != "Y"
  1089.       // "No" Selected
  1090.       RETURN
  1091.    ENDIF
  1092.  
  1093.    // "Yes" Selected
  1094.    Dlog037()                    // Execute Next Window in Chain
  1095.    KEYBOARD CHR(K_ESC)         // Remove Previous Window from Screen
  1096.    RETURN
  1097.  
  1098. *******************************************************************************
  1099. ** CALLED BY: Dialog Window:  DLOG037   Show Progress Thermometer            **
  1100. **   Comment: Display Progress Thermometer                                   **
  1101. *******************************************************************************
  1102. PROCEDURE Hand038()
  1103.    LOCAL J,cThm,cOThm := " "
  1104.  
  1105.    // Display a Progression Thermometer
  1106.    FOR J := 1 TO 500
  1107.       cThm := Thermometr(40,1,500,J)
  1108.       IF cThm != cOThm
  1109.          @ WinBott()-1,WinLeft()+2 SAY cThm
  1110.          cOThm := cThm
  1111.       ENDIF
  1112.    NEXT
  1113.  
  1114.    KEYBOARD(K_ESC)            // Remove Previous Window
  1115.    RETURN
  1116.  
  1117. *******************************************************************************
  1118. ** CALLED BY: Selection << Description >> in Proc:  MENU007                  **
  1119. **   Comment: View BDEMO007.TXT (Breport)                                    **
  1120. *******************************************************************************
  1121. PROCEDURE Hand039()
  1122.    Dlog020("BDEMO007.TXT")
  1123.    RETURN
  1124.  
  1125. *******************************************************************************
  1126. ** CALLED BY: Selection << Description >> in Proc:  MENU009                  **
  1127. **   Comment: View BDEMO008.TXT (Lib Funcs)                                  **
  1128. *******************************************************************************
  1129. PROCEDURE Hand040()
  1130.    Dlog020("BDEMO008.TXT")
  1131.    RETURN
  1132.  
  1133. *******************************************************************************
  1134. ** CALLED BY: Dialog Window:  DLOG042   Center() Sample                      **
  1135. **   Comment: Center() Sample                                                **
  1136. *******************************************************************************
  1137. PROCEDURE Hand043()
  1138.    LOCAL nDr1 := WinTop()
  1139.    LOCAL nDc1 := WinLeft()
  1140.    LOCAL nDr2 := WinBott()
  1141.    LOCAL nDc2 := WinRight()
  1142.  
  1143.    Center(">> This is Centered <<",nDr1+4,nDc1+1,nDc2-nDc1-3)
  1144.    WaitKey()
  1145.    RETURN
  1146.  
  1147. *******************************************************************************
  1148. ** CALLED BY: Dialog Window:  DLOG044   Message Sample                       **
  1149. **   Comment: Message Sample                                                 **
  1150. *******************************************************************************
  1151. PROCEDURE Hand045()
  1152.    LOCAL nDr1 := WinTop()
  1153.    LOCAL nDc1 := WinLeft()
  1154.    LOCAL nDr2 := WinBott()
  1155.    LOCAL nDc2 := WinRight()
  1156.  
  1157.    Message("Press a Key for the Next Message",nDr2-1,nDc1+2, ;
  1158.            nDc2-nDc1-3,AbVar(WERR_CLR_))
  1159.    WaitKey()
  1160.  
  1161.    Message("This One Blinks, Press a Key",nDr2-1,nDc1+2, ;
  1162.            nDc2-nDc1-3,"*"+AbVar(WERR_CLR_))
  1163.    WaitKey()
  1164.  
  1165.    Message("Last One!  Goodbye",nDr2-1,nDc1+2,nDc2-nDc1-3,AbVar(WMSG_CLR_))
  1166.    WaitKey()
  1167.  
  1168.    RETURN
  1169.  
  1170. *******************************************************************************
  1171. ** CALLED BY: Selection << Plain >> in Proc:  MENU046                        **
  1172. **   Comment: Plain MsgBox() Sample                                          **
  1173. *******************************************************************************
  1174. PROCEDURE Hand047()
  1175.    MsgBox("Plain MsgBox() Sample")
  1176.    RETURN
  1177.  
  1178. *******************************************************************************
  1179. ** CALLED BY: Selection << Array >> in Proc:  MENU046                        **
  1180. **   Comment: Array MsgBox() Sample                                          **
  1181. *******************************************************************************
  1182. PROCEDURE Hand048()
  1183.    MsgBox({"An Array Can Be Passed", ;
  1184.            "To the MsgBox() Function", ;
  1185.            "To Create Multi Line" , ;
  1186.            "Boxed Messages."})
  1187.    RETURN
  1188.  
  1189. *******************************************************************************
  1190. ** CALLED BY: Selection << Menu >> in Proc:  MENU046                         **
  1191. **   Comment: Menu MsgBox() Sample                                           **
  1192. *******************************************************************************
  1193. PROCEDURE Hand049()
  1194.    LOCAL nAnswer
  1195.  
  1196.    SetMsgLin("▓ Use Arrows-Move Pointer ▓ ENTER-Select ▓ ESC-Exit ▓")
  1197.    nAnswer := MsgBox({"How Much Wood Would", ;
  1198.                       "a Woodchuck Chuck", ;
  1199.                       "If a Woodchuck Could", ;
  1200.                       "Chuck Wood?"},AbVar(MSG_CLR_),, ;
  1201.                       {"Little","Some","Lots","Gobs"})
  1202.  
  1203.    DO CASE
  1204.    CASE nAnswer == 1
  1205.       MsgBox("Your Answer: LITTLE")
  1206.    CASE nAnswer == 2
  1207.       MsgBox("Your Answer: SOME")
  1208.    CASE nAnswer == 3
  1209.       MsgBox("Your Answer: LOTS")
  1210.    CASE nAnswer == 4
  1211.       MsgBox("Your Answer: GOBS")
  1212.    ENDCASE
  1213.    RETURN
  1214.  
  1215. *******************************************************************************
  1216. ** CALLED BY: Selection << Prompt >> in Proc:  MENU046                       **
  1217. **   Comment: Prompt MsgBox() Sample                                         **
  1218. *******************************************************************************
  1219. PROCEDURE Hand050()
  1220.    LOCAL cAnswer
  1221.  
  1222.    SetMsgLin("▓ Press L-Little, S-Some, O-lOts, or G-Gobs ▓ ESC-Exit ▓")
  1223.    cAnswer := MsgBox({"How Much Wood Would", ;
  1224.                       "a Woodchuck Chuck", ;
  1225.                       "If a Woodchuck Could", ;
  1226.                       "Chuck Wood?", ;
  1227.                       "[L]ittle [S]ome L[O]ts [G]obs"}, ;
  1228.                       AbVar(MSG_CLR_),,"LSOG")
  1229.  
  1230.    DO CASE
  1231.    CASE cAnswer == "L"
  1232.      MsgBox("Your Answer: LITTLE")
  1233.    CASE cAnswer == "S"
  1234.       MsgBox("Your Answer: SOME")
  1235.    CASE cAnswer == "O"
  1236.       MsgBox("Your Answer: LOTS")
  1237.    CASE cAnswer == "G"
  1238.       MsgBox("Your Answer: GOBS")
  1239.    ENDCASE
  1240.    RETURN
  1241.  
  1242. *******************************************************************************
  1243. ** CALLED BY: Dialog Window:  DLOG052   Thermometr() Sample                  **
  1244. **   Comment: Thermometr() Sample                                            **
  1245. *******************************************************************************
  1246. PROCEDURE Hand053()
  1247.    LOCAL J,cThm,cOThm := " "
  1248.  
  1249.    // Display a Progression Thermometer
  1250.    FOR J := 1 TO 500
  1251.       cThm := Thermometr(40,1,500,J)
  1252.       IF cThm != cOThm
  1253.          @ WinBott()-1,WinLeft()+2 SAY cThm
  1254.          cOThm := cThm
  1255.       ENDIF
  1256.    NEXT
  1257.  
  1258.    RETURN
  1259.  
  1260. *******************************************************************************
  1261. ** CALLED BY: Selection << Description >> in Proc:  MENU017                  **
  1262. **   Comment: View BDEMO009.TXT (Screen)                                     **
  1263. *******************************************************************************
  1264. PROCEDURE Hand054()
  1265.    Dlog020("BDEMO009.TXT")
  1266.    RETURN
  1267.  
  1268. *******************************************************************************
  1269. ** CALLED BY: Selection << Description >> in Proc:  MENU016                  **
  1270. **   Comment: View BDEMO010.TXT (Database)                                   **
  1271. *******************************************************************************
  1272. PROCEDURE Hand055()
  1273.    Dlog020("BDEMO010.TXT")
  1274.    RETURN
  1275.  
  1276. *******************************************************************************
  1277. ** CALLED BY: Dialog Window:  DLOG028   Bounded by Picklist (By State)       **
  1278. **   Comment: Setup Bounded by Picklist                                      **
  1279. *******************************************************************************
  1280. PROCEDURE Hand056(mState)
  1281.  
  1282.    SELECT Cities
  1283.    SET ORDER TO 3
  1284.    IF !iSeek(mState,"CITIES",3)
  1285.       ErrTone()
  1286.       MsgBox("That State Not Found")
  1287.       RETURN
  1288.    ENDIF
  1289.    // a call the the next window will automatically be generated
  1290.    // here
  1291.  
  1292.    Plst029()
  1293.  
  1294. *******************************************************************************
  1295. ** CALLED BY: Dialog Window:  DLOG059   Rel_Maint() Sample                   **
  1296. **   Comment: Rel_Maint() Sample                                             **
  1297. *******************************************************************************
  1298. PROCEDURE Hand060()
  1299.    LOCAL nKeyPress
  1300.  
  1301.    DO WHILE .T.
  1302.       nKeyPress := WaitKey()
  1303.  
  1304.       IF nKeyPress == K_SPACE
  1305.          // The Dlog063() gets replaced with a call to the
  1306.          // next window during code gen
  1307.          Dlog063()
  1308.          EXIT
  1309.       ENDIF
  1310.  
  1311.       IF nKeyPress == K_ESC
  1312.          EXIT
  1313.       ENDIF
  1314.    ENDDO
  1315.    RETURN
  1316.  
  1317. *******************************************************************************
  1318. ** CALLED BY: Dialog Window:  DLOG065   Ask() Sample                         **
  1319. **   Comment: Ask() Sample                                                   **
  1320. *******************************************************************************
  1321. PROCEDURE Hand066()
  1322.    LOCAL cAnswer
  1323.    LOCAL nDr1 := WinTop()
  1324.    LOCAL nDc1 := WinLeft()
  1325.    LOCAL nDr2 := WinBott()
  1326.    LOCAL nDc2 := WinRight()
  1327.  
  1328.    cAnswer := Ask("Do You Like the Builder System? (Y/N)","YN", ;
  1329.           nDr2-1,nDc1+2,nDc2-nDc1-3,AbVar(WMSG_CLR_),"ESC")
  1330.  
  1331.    IF cAnswer == "Y"
  1332.       MsgBox({"WONDERFUL!  By the Way...", ;
  1333.               "Registration is Only $59", ;
  1334.               "or $99 with Library Source!"},AbVar(MSG_CLR_))
  1335.    ENDIF
  1336.  
  1337.    IF cAnswer == "N"
  1338.       MsgBox({"WELL Then You'll Just Have", ;
  1339.               "to Examine This Demo Until", ;
  1340.               "You See the Light!"},AbVar(MSG_CLR_))
  1341.    ENDIF
  1342.    RETURN
  1343.  
  1344. *******************************************************************************
  1345. ** CALLED BY: Dialog Window:  DLOG067   AskMenu() Sample                     **
  1346. **   Comment: AskMenu() Sample                                               **
  1347. *******************************************************************************
  1348. PROCEDURE Hand068()
  1349.    LOCAL cAnswer
  1350.    LOCAL nDr1 := WinTop()
  1351.    LOCAL nDc1 := WinLeft()
  1352.    LOCAL nDr2 := WinBott()
  1353.    LOCAL nDc2 := WinRight()
  1354.  
  1355.    cAnswer := AskMenu("It is: ", ;
  1356.                       {"Assembler","BASIC","C","Clipper","FoxPro"}, ;
  1357.                       nDr2-1,nDc1+2,"A",nDc2-nDc1-3,AbVar(WMSG_CLR_),"ESC")
  1358.  
  1359.    DO CASE
  1360.    CASE cAnswer == "A"
  1361.       MsgBox({"Fun Stuff","But Your Still a Bit-Twiddler!"})
  1362.    CASE cAnswer == "B"
  1363.       MsgBox({"I'll Keep this Demo","Simple for You"})
  1364.    CASE cAnswer == "C"
  1365.       MsgBox({"Bit-Twiddler!  Which is OK", ;
  1366.              "As Long as You Don't Use UNIX"})
  1367.    Case cAnswer == "L"
  1368.       MsgBox("When Your Right, You're RIGHT!")
  1369.    CASE cAnswer  == "F"
  1370.       MsgBox({"You are Completely","H O P E L E S S !"})
  1371.    ENDCASE
  1372.    RETURN
  1373.  
  1374. *******************************************************************************
  1375. ** CALLED BY: Dialog Window:  DLOG070   Browser() Sample                     **
  1376. **   Comment: Browser() Sample                                               **
  1377. *******************************************************************************
  1378. PROCEDURE Hand071()
  1379.    DO WHILE .T.
  1380.      WaitKey()
  1381.  
  1382.      IF LASTKEY() == K_ESC .or. LastKey() == K_SPACE
  1383.        EXIT
  1384.      ENDIF
  1385.    ENDDO
  1386.  
  1387.    IF LASTKEY() == K_ESC
  1388.      RETURN
  1389.    ENDIF
  1390.  
  1391.    SELECT Cities
  1392.    GO TOP
  1393.    SETCOLOR("+"+ABVar(HELP_CLR_))
  1394.  
  1395.    SetMsgLin("▓ Arrows/PgUp/PgDn-Scroll ▓ ESC-Exit ▓")
  1396.    Browser(07,07,20,50)
  1397.  
  1398.    SETCOLOR(AbVar(WNDW_CLR_))
  1399.    RETURN
  1400.  
  1401. *******************************************************************************
  1402. ** CALLED BY: Dialog Window:  DLOG083   Rght_Jst() Sample                    **
  1403. **   Comment: Rght_Jst() Sample                                              **
  1404. *******************************************************************************
  1405. PROCEDURE Hand084()
  1406.    LOCAL nDr1 := WinTop()
  1407.    LOCAL nDc1 := WinLeft()
  1408.    LOCAL nDr2 := WinBott()
  1409.    LOCAL nDc2 := WinRight()
  1410.  
  1411.    Message("Press Any Key to Try Again.  ESC Exits",nDr2-1,nDc1+2, ;
  1412.            nDc2-nDc1-3,AbVar(WMSG_CLR_))
  1413.    WaitKey()
  1414.  
  1415.    IF LASTKEY() == K_ESC
  1416.      KEYBOARD CHR(K_ESC)
  1417.    ENDIF
  1418.  
  1419.    RETURN
  1420.  
  1421. *******************************************************************************
  1422. ** CALLED BY: Selection << Description >> in Proc:  MENU015                  **
  1423. **   Comment: View BDEMO011.TXT (Valid)                                      **
  1424. *******************************************************************************
  1425. PROCEDURE Hand085()
  1426.    Dlog020("BDEMO011.TXT")
  1427.    RETURN
  1428.  
  1429. *******************************************************************************
  1430. ** CALLED BY: Selection << Description >> in Proc:  MENU014                  **
  1431. **   Comment: View BDEMO012.TXT (DOS)                                        **
  1432. *******************************************************************************
  1433. PROCEDURE Hand086()
  1434.    Dlog020("BDEMO012.TXT")
  1435.    RETURN
  1436.  
  1437. *******************************************************************************
  1438. ** CALLED BY: Selection << Description >> in Proc:  MENU013                  **
  1439. **   Comment: View BDEMO013.TXT (Text Files)                                 **
  1440. *******************************************************************************
  1441. PROCEDURE Hand087()
  1442.    Dlog020("BDEMO013.TXT")
  1443.    RETURN
  1444.  
  1445. *******************************************************************************
  1446. ** CALLED BY: Selection << Description >> in Proc:  MENU012                  **
  1447. **   Comment: View BDEMO014.TXT (Memo Files)                                 **
  1448. *******************************************************************************
  1449. PROCEDURE Hand088()
  1450.    Dlog020("BDEMO014.TXT")
  1451.    RETURN
  1452.  
  1453. *******************************************************************************
  1454. ** CALLED BY: Dialog Window:  DLOG089   ChgDir() Sample                      **
  1455. **   Comment: ChgDir() Sample                                                **
  1456. *******************************************************************************
  1457. PROCEDURE Hand090(cDrctry)
  1458.  
  1459.    MsgBox("ChgDir() Return Code: "+ALLTRIM(STR(ChgDir(cDrctry),4,0)))
  1460.    RETURN
  1461.  
  1462. *******************************************************************************
  1463. ** CALLED BY: Dialog Window:  DLOG092   MakDir() Sample                      **
  1464. **   Comment: MakDir() Sample                                                **
  1465. *******************************************************************************
  1466. PROCEDURE Hand093(cDrctry)
  1467.  
  1468.    MsgBox("MakDir() Result Code: "+ALLTRIM(STR(MakDir(cDrctry),4,0)))
  1469.    RETURN
  1470.  
  1471. *******************************************************************************
  1472. ** CALLED BY: Dialog Window:  DLOG094   InPath() Sample                      **
  1473. **   Comment: InPath() Sample                                                **
  1474. *******************************************************************************
  1475. PROCEDURE Hand095(mFile)
  1476.  
  1477.    LOCAL cPath := InPath(mFile)
  1478.  
  1479.    DO CASE
  1480.    CASE EMPTY(cPath)
  1481.      MsgBox("File Not in DOS PATH")
  1482.    CASE cPath == "."
  1483.      MsgBox("File is in Current Directory")
  1484.    OTHERWISE
  1485.      MsgBox({"File is Located in Subdirectory:",cPath})
  1486.    ENDCASE
  1487.    RETURN
  1488.  
  1489. *******************************************************************************
  1490. ** CALLED BY: Dialog Window:  DLOG096   MaxHndls() Sample                    **
  1491. **   Comment: MaxHndls() Sample                                              **
  1492. *******************************************************************************
  1493. PROCEDURE Hand097()
  1494.    @ WinBott()-2,WinLeft()+28 SAY STR(MaxHndls(),3,0)
  1495.    WaitKey()
  1496.    RETURN
  1497.  
  1498. *******************************************************************************
  1499. ** CALLED BY: Selection << No Options >> in Proc:  MENU003                   **
  1500. **   Comment: Picklist No Options Setup                                      **
  1501. *******************************************************************************
  1502. PROCEDURE Hand102()
  1503.    SELECT Cities
  1504.    SET ORDER TO 1
  1505.    GO TOP
  1506.  
  1507.    Plst027()
  1508.  
  1509. *******************************************************************************
  1510. ** CALLED BY: Selection << QWERTY Scroll Option >> in Proc:  MENU003         **
  1511. **   Comment: QWERTY Scroll Option Setup                                     **
  1512. *******************************************************************************
  1513. PROCEDURE Hand103()
  1514.    SELECT Cities
  1515.    SET ORDER TO 2
  1516.    GO TOP
  1517.  
  1518.    Plst030()
  1519.  
  1520. *******************************************************************************
  1521. ** CALLED BY: Selection << Sample >> in Proc:  MENU004                       **
  1522. **   Comment: File Maintenance Setup                                         **
  1523. *******************************************************************************
  1524. PROCEDURE Hand104()
  1525.    SELECT Cities
  1526.    SET ORDER TO 2
  1527.    GO TOP
  1528.  
  1529.    Fmnt034()
  1530.  
  1531. *******************************************************************************
  1532. ** CALLED BY: Dialog Window:  DLOG051   SetMsgLin() Sample                   **
  1533. **   Comment: SetMsgLin() Sample                                             **
  1534. *******************************************************************************
  1535. PROCEDURE Hand105()
  1536.    LOCAL cMsgLin
  1537.  
  1538.    SetMsgLin("▓ Press a Key to Save This Text ▓")
  1539.    WaitKey()
  1540.    cMsgLin := SetMsgLin("▓ Previous Text Saved ▓ Press a Key to Restore ▓")
  1541.    WaitKey()
  1542.    SetMsgLin(cMsgLin)
  1543.    WaitKey()
  1544.  
  1545.    RETURN
  1546.  
  1547. *******************************************************************************
  1548. ** CALLED BY: Dialog Window:  DLOG106   Edt_Memo() Sample                    **
  1549. **   Comment: Edt_Memo() Sample                                              **
  1550. *******************************************************************************
  1551. PROCEDURE Hand107()
  1552.    DO WHILE .T.
  1553.       WaitKey()
  1554.  
  1555.       IF LASTKEY() == K_ENTER .OR. LASTKEY() == K_ESC
  1556.          EXIT
  1557.       ENDIF
  1558.    ENDDO
  1559.  
  1560.    IF LASTKEY() == K_ENTER
  1561.       SET CURSOR ON
  1562.       SELECT Options
  1563.       qTstTxt := Edt_Memo(10,01,22,78,qTstTxt,"TSTTXT"," TEST COMMENTS ", ;
  1564.                AbVar(WNDW_CLR_),AbVar(WMSG_CLR_),20)
  1565.       SET CURSOR OFF
  1566.    ENDIF
  1567.    RETURN
  1568.  
  1569. *******************************************************************************
  1570. ** CALLED BY: Selection << Description >> in Proc:  MENU011                  **
  1571. **   Comment: View BDEMO015.TXT (Control)                                    **
  1572. *******************************************************************************
  1573. PROCEDURE Hand109()
  1574.    Dlog020("BDEMO015.TXT")
  1575.    RETURN
  1576.  
  1577. *******************************************************************************
  1578. ** CALLED BY: Dialog Window:  DLOG111   TimeOut() Sample                     **
  1579. **   Comment: TimeOut() Sample                                               **
  1580. *******************************************************************************
  1581. PROCEDURE Hand112()
  1582.    DO WHILE .T.
  1583.       WaitKey()
  1584.  
  1585.       IF LASTKEY() == K_ENTER
  1586.          EXIT
  1587.       ENDIF
  1588.  
  1589.       IF LASTKEY() == K_ESC
  1590.          RETURN
  1591.       ENDIF
  1592.    ENDDO
  1593.  
  1594.    SET KEY KP_ALT_MINUS TO TimO_Test
  1595.    TimeOut(5,Hex2Dec("4A00"))         // Set a 5 Second Timeout
  1596.    Dlog113()
  1597.    SET KEY KP_ALT_MINUS TO
  1598.    TimeOut(0,0)                       // Turn TimeOut() Off/Reset
  1599.    RETURN
  1600.  
  1601.    PROCEDURE TimO_Test(Prc,Lin,Var)
  1602.       IF TimeOut() == "Y"
  1603.          MsgBox("No System Activity for 5 Consecutive Seconds!")
  1604.          KEYBOARD CHR(K_ESC)
  1605.       ENDIF
  1606.       RETURN
  1607.  
  1608. *******************************************************************************
  1609. ** CALLED BY: Selection << Description >> in Proc:  MENU010                  **
  1610. **   Comment: View BDEMO016.TXT (Convrsn)                                    **
  1611. *******************************************************************************
  1612. PROCEDURE Hand114()
  1613.    Dlog020("BDEMO016.TXT")
  1614.    RETURN
  1615.  
  1616. *******************************************************************************
  1617. ** CALLED BY: Dialog Window:  DLOG115   Hex2Dec() Sample                     **
  1618. **   Comment: Hex2Dec() Sample                                               **
  1619. *******************************************************************************
  1620. PROCEDURE Hand116(mHexNbr)
  1621.    MsgBox({"The Decimal Equivalant of "+ALLTRIM(mHexNbr), ;
  1622.           "is "+ALLTRIM(STR(Hex2Dec(ALLTRIM(mHexNbr)),10,0))})
  1623.    RETURN
  1624.  
  1625. *******************************************************************************
  1626. ** CALLED BY: Dialog Window:  DLOG117   Dec2Hex() Sample                     **
  1627. **   Comment: Dec2Hex() Sample                                               **
  1628. *******************************************************************************
  1629. PROCEDURE Hand118(mDecnbr)
  1630.  
  1631.    MsgBox({"The Hexidecimal Equivalent to "+ALLTRIM(STR(mDecNbr,10,0)), ;
  1632.           "is "+Dec2Hex(mDecNbr)})
  1633.    RETURN
  1634.  
  1635. *******************************************************************************
  1636. ** CALLED BY: Selection << Description >> in Proc:  MENU019                  **
  1637. **   Comment: View BDEMO017.TXT (Mouse)                                      **
  1638. *******************************************************************************
  1639. PROCEDURE Hand119()
  1640.    Dlog020("BDEMO017.TXT")
  1641.    RETURN
  1642.  
  1643. *******************************************************************************
  1644. ** CALLED BY: Selection << Description >> in Proc:  MENU018                  **
  1645. **   Comment: View BDEMO018.TXT (Other)                                      **
  1646. *******************************************************************************
  1647. PROCEDURE Hand120()
  1648.    Dlog020("BDEMO018.TXT")
  1649.    RETURN
  1650.  
  1651. *******************************************************************************
  1652. ** CALLED BY: Dialog Window:  DLOG122   WaitKey() Sample                     **
  1653. **   Comment: WaitKey() Sample                                               **
  1654. *******************************************************************************
  1655. PROCEDURE Hand123()
  1656.    MsgBox("LastKey() == "+AllTrim(Str(WaitKey())))
  1657.    RETURN
  1658.  
  1659. *******************************************************************************
  1660. ** CALLED BY: Dialog Window:  DLOG121   ErrTone() Sample                     **
  1661. **   Comment: ErrTone() Sample                                               **
  1662. *******************************************************************************
  1663. PROCEDURE Hand124(mToneNbr)
  1664.  
  1665.    ErrTone(mToneNbr)
  1666.    RETURN
  1667.  
  1668. *******************************************************************************
  1669. ** CALLED BY: Dialog Window:  DLOG126   AddMPad()/DelMPad() Sample           **
  1670. **   Comment: AddMPad()/DelMPad() Sample                                     **
  1671. *******************************************************************************
  1672. PROCEDURE Hand127()
  1673.    LOCAL nDr1 := WinTop()
  1674.    LOCAL nDc1 := WinLeft()
  1675.    LOCAL nDr2 := WinBott()
  1676.    LOCAL nDc2 := WinRight()
  1677.    LOCAL nTstIdx1, nTstIdx2
  1678.  
  1679.    nTstIdx1 := AddMPad(nDr2-3,nDc1+1,nDr2,nDc2-1,1,{||MousePrss()})
  1680.    nTstIdx2 := AddMPad(nDr2-3,nDc1+1,nDr2,nDc2-1,0,{||MouseRlse()})
  1681.  
  1682.    DO WHILE .T.
  1683.       WaitKey()
  1684.  
  1685.       IF LASTKEY() == K_ESC
  1686.          EXIT
  1687.       ENDIF
  1688.    ENDDO
  1689.  
  1690.    DelMPad(nTstIdx1)
  1691.    DelMPad(nTstIdx2)
  1692.  
  1693.    RETURN
  1694.  
  1695.    FUNCTION MousePrss()
  1696.       LOCAL nDr1 := WinTop()
  1697.       LOCAL nDc1 := WinLeft()
  1698.       LOCAL nDr2 := WinBott()
  1699.       LOCAL nDc2 := WinRight()
  1700.  
  1701.       Message("LEFT MOUSE BUTTON PRESSED",nDr2-1,nDc1+2,nDc2-nDc1-3, ;
  1702.               AbVar(WERR_CLR_))
  1703.       RETURN(NIL)
  1704.  
  1705.    FUNCTION MouseRlse()
  1706.       LOCAL nDr1 := WinTop()
  1707.       LOCAL nDc1 := WinLeft()
  1708.       LOCAL nDr2 := WinBott()
  1709.       LOCAL nDc2 := WinRight()
  1710.  
  1711.       Message("LEFT MOUSE BUTTON RELEASED",nDr2-1,nDc1+2,nDc2-nDc1-3, ;
  1712.               Abvar(WMSG_CLR_))
  1713.       RETURN(NIL)
  1714.  
  1715. *******************************************************************************
  1716. ** CALLED BY: Dialog Window:  DLOG128   Lateral Scroll Picklist Sample       **
  1717. **   Comment: Lateral Scroll Picklist Sample                                 **
  1718. *******************************************************************************
  1719. PROCEDURE Hand129()
  1720.    LOCAL nMouseIdx := AddMPad(0,0,24,79,0,{||__KEYBOARD(CHR(13))})
  1721.  
  1722.    DO WHILE .T.
  1723.       WaitKey()
  1724.  
  1725.       IF LASTKEY() == K_ENTER .OR. LASTKEY() == K_ESC
  1726.          EXIT
  1727.       ENDIF
  1728.    ENDDO
  1729.  
  1730.    DelMPad(nMouseIdx)
  1731.  
  1732.    IF LASTKEY() == K_ENTER
  1733.       Plst130()
  1734.    ENDIF
  1735.    RETURN
  1736.  
  1737. *******************************************************************************
  1738. ** CALLED BY: Pick List Window:  PLST130   Lateral Scroll Picklist Sample    **
  1739. **   Comment: Lateral Scroll Picklist Sample                                 **
  1740. *******************************************************************************
  1741. PROCEDURE Hand133()
  1742.    MsgBox({" City: "+Cities->City, ;
  1743.            "State: "+Cities->State, ;
  1744.            "  Zip: "+Cities->Zip, ;
  1745.            "Selected Record"})
  1746.    RETURN
  1747.  
  1748. *******************************************************************************
  1749. ** CALLED BY: Selection << aPop() >> in Proc:  MENU017                       **
  1750. **   Comment: aPop() Sample                                                  **
  1751. *******************************************************************************
  1752. PROCEDURE Hand134()
  1753.    LOCAL Settings := {" Auto Save"," Print Headings"," Color Screen", ;
  1754.                       " Network Mode"," Display Clock"}, ;
  1755.                       MsgTxt := {"Settings You Selected:",}
  1756.  
  1757.    aPop(08,40,14,58,@Settings)
  1758.  
  1759.    AEVAL(Settings,{|x|IF(LEFT(x,1) == CHR(251), ;
  1760.          AADD(MsgTxt,"@C"+SUBSTR(x,2)),NIL)})
  1761.    MsgBox(MsgTxt,AbVar(MSG_CLR_))
  1762.  
  1763.    RETURN
  1764.  
  1765. *******************************************************************************
  1766. ** CALLED BY: Selection << Incentives >> in Proc:  MENU002                   **
  1767. **   Comment: View BDEMO019.TXT (Incentives)                                 **
  1768. *******************************************************************************
  1769. PROCEDURE Hand138()
  1770.    Dlog020("BDEMO019.TXT")
  1771.    RETURN
  1772.  
  1773. *******************************************************************************
  1774. ** CALLED BY: Dialog Window:  DLOG063   Rel_Maint() Sample                   **
  1775. **   Comment: Rel_Maint() Sample                                             **
  1776. *******************************************************************************
  1777. PROCEDURE Hand139()
  1778.    SELECT Cities
  1779.    SET ORDER TO 2
  1780.    GO TOP
  1781.    WaitKey()
  1782.  
  1783.    Plst061()
  1784.  
  1785. *******************************************************************************
  1786. ** CALLED BY: Dialog Window:  DLOG057   Gen_Maint() Lib Func                 **
  1787. **   Comment: Parm Pass mOpts                                                **
  1788. *******************************************************************************
  1789. PROCEDURE Hand142(mOpts)
  1790.        Fmnt058(mOpts)
  1791.  
  1792. *******************************************************************************
  1793. ** CALLED BY: Selection << Description >> in Proc:  MENU147                  **
  1794. **   Comment: View BDEMO020.TXT (Incentives)                                 **
  1795. *******************************************************************************
  1796. PROCEDURE Hand148()
  1797.    Dlog020("BDEMO020.TXT")
  1798.    RETURN
  1799.  
  1800. *******************************************************************************
  1801. ** CALLED BY: Selection << Sample >> in Proc:  MENU147                       **
  1802. **   Comment: Position TBrowse Database                                      **
  1803. *******************************************************************************
  1804. PROCEDURE Hand149()
  1805.    Friends->( DBSETORDER( 1 ) )
  1806.    Cities->( DBSETORDER( 2 ) )
  1807.    DBSELECTAREA( "Cities" )
  1808.    SET RELATION TO Cities->City INTO Friends
  1809.    Cities->( DBGOTOP() )
  1810.  
  1811.    Brws146()
  1812.  
  1813.    DBSELECTAREA( "Cities" )
  1814.    SET RELATION TO
  1815.  
  1816. *******************************************************************************
  1817. ** CALLED BY: Selection << Description >> in Proc:  MENU002                  **
  1818. **   Comment: Initialize Parm Passing                                        **
  1819. *******************************************************************************
  1820. PROCEDURE Hand150()
  1821.    LOCAL cViewFile
  1822.    // This Hand Code Section will only get call once, when the menu option
  1823.    // "About Builder"/"Description" is selected.  Its purpose is to create
  1824.    // the next procedure (Dlog020) with a parameter.  That way the other 19
  1825.    // Hand Code Sections that call Dlog020 will be able to send it a parm!
  1826.    Dlog020(cViewFile)
  1827.  
  1828.  
  1829. ************************** ENDHAND End of Hand Code ***************************
  1830.  
  1831. *******************************************************************************
  1832. ** >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dialog Boxes <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< **
  1833. *******************************************************************************
  1834.  
  1835. *******************************************************************************
  1836. ** CALLED BY: Hand Code:  HAND150   Initialize Parm Passing                  **
  1837. **   Comment: Builder Desc Text File View                                    **
  1838. *******************************************************************************
  1839. PROCEDURE Dlog020(cViewFile)
  1840.  
  1841.    VarPush("DLOG020")
  1842.  
  1843.    SETCOLOR(Var(WNDW_CLR_))
  1844.    @ 05,00,22,78 WINDOW STYLE "3+"
  1845.  
  1846.    @ 01,02 WINSAY "Loading File..."
  1847.  
  1848.    *SetMsgLin("▓ Enter Your Own Message Line Here ▓ ESC-Exit ▓")
  1849.  
  1850.    Hand021(cViewFile)
  1851.  
  1852.    VarPop()
  1853.    WINDOW REMOVE
  1854.  
  1855. *******************************************************************************
  1856. ** CALLED BY: Selection << Bounded by Option >> in Proc:  MENU003            **
  1857. **   Comment: Bounded by Picklist (By State)                                 **
  1858. *******************************************************************************
  1859. PROCEDURE Dlog028()
  1860.    LOCAL x,GetList := {},mState
  1861.  
  1862.    VarPush("DLOG028")
  1863.  
  1864.    SETCOLOR(Var(WNDW_CLR_))
  1865.    @ 13,24,19,67 WINDOW STYLE "3+"
  1866.  
  1867.    SETCOLOR(Var(WMSG_CLR_))
  1868.    @ 01,02 WINSAY "The Following Picklist Will Only Display"
  1869.    @ 02,02 WINSAY "Records From the State You Select."
  1870.    SETCOLOR(Var(WNDW_CLR_))
  1871.    @ 04,02 WINSAY "State Code:"
  1872.  
  1873.    mState := Space(02)
  1874.  
  1875.    DO WHILE .T.
  1876.       SetMsgLin("▓ Enter State Code ▓ ESC-Exit ▓")
  1877.  
  1878.       @ 04,14 WINGET mState PICTURE "!!" VALIDBLOCK ;
  1879.       {|| ;
  1880.           GenVld(In_Usa(GETACTIVE():varGet()), ;
  1881.                  "Enter a Valid U.S. State Code", ;
  1882.                  WinBott()-1,WinLeft()+2,WinRight()-2,.T.,Var(WERR_CLR_))}
  1883.  
  1884.       ReadGets(@GetList)
  1885.  
  1886.       IF LASTKEY() == K_ESC
  1887.          EXIT
  1888.       ENDIF
  1889.  
  1890.       ** You may want to do some validations here **
  1891.       ** before executing the next proc.          **
  1892.       Hand056(mState)
  1893.    ENDDO
  1894.  
  1895.    VarPop()
  1896.    WINDOW REMOVE
  1897.  
  1898. *******************************************************************************
  1899. ** CALLED BY: Selection << Show Dialog >> in Proc:  MENU005                  **
  1900. **   Comment: Dialog Sample                                                  **
  1901. *******************************************************************************
  1902. PROCEDURE Dlog035()
  1903.    LOCAL x,GetList := {},mDummy1,mDummy2,mDummy3,mDummy4,mDummy5,mDummy6,mDummy,mColor, ;
  1904.           nColor
  1905.  
  1906.    VarPush("DLOG035")
  1907.  
  1908.    SETCOLOR(Var(WNDW_CLR_))
  1909.    @ 00,26,22,74 WINDOW STYLE "3+"
  1910.  
  1911.    @ 01,02 WINSAY "Display Text In Your Dialog Box..."
  1912.    @ 02,02 WINSAY "Display"
  1913.  
  1914.    SETCOLOR(Var(WMSG_CLR_))
  1915.    @ 02,10 WINSAY "Highlighted"
  1916.    SETCOLOR(Var(WNDW_CLR_))
  1917.    @ 02,22 WINSAY "Text also..."
  1918.    @ 04,02 WINSAY "Issue SAYs and/or GETS"
  1919.    @ 06,02 WINSAY "You Can Only Exit With ESC Until ALL Valids"
  1920.    @ 07,02 WINSAY "are Satisfied.  Each of the Following Must be"
  1921.    @ 08,02 WINSAY "Y or N.  Try Bypassing Using PgDn or Mouse!"
  1922.  
  1923.    SETCOLOR(Var(WMSG_CLR_))
  1924.    @ 12,02 WINSAY "Issue a MENU type GET that Will Return"
  1925.    @ 13,02 WINSAY "Either a Unique Character or Numeric Value:"
  1926.    SETCOLOR(Var(WNDW_CLR_))
  1927.    @ 14,02 WINSAY "What is Your Favorite Color?"
  1928.    @ 17,02 WINSAY "Or a Drop Down List:"
  1929.    @ 17,31 WINSAY "(Press Alt+Down)"
  1930.    @ 19,02 WINSAY "Follow Up a Dialog with Hand Code to"
  1931.    @ 20,02 WINSAY "Take a Confirmation Prompt."
  1932.  
  1933.    mDummy := Space(04)
  1934.    mDummy1 := " "
  1935.    mDummy2 := " "
  1936.    mDummy3 := " "
  1937.    mDummy4 := " "
  1938.    mDummy5 := " "
  1939.    mDummy6 := " "
  1940.    mColor := Space(01)
  1941.    nColor := 1
  1942.  
  1943.    DO WHILE .T.
  1944.       SetMsgLin("▓ A Dialog is a General Purpose Window ▓ ESC-Exit ▓")
  1945.  
  1946.       @ 04,25 WINGET mDummy PICTURE "!!!!"
  1947.       @ 10,03 WINGET mDummy1 PICTURE "!" VALIDBLOCK ;
  1948.       {|| ;
  1949.           ChkChr("YN", ;
  1950.                  "Y-Yes or N-No Only", ;
  1951.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  1952.       @ 10,07 WINGET mDummy2 PICTURE "!" VALIDBLOCK ;
  1953.       {|| ;
  1954.           ChkChr("YN", ;
  1955.                  "Y-Yes or N-No Only", ;
  1956.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  1957.       @ 10,11 WINGET mDummy3 PICTURE "!" VALIDBLOCK ;
  1958.       {|| ;
  1959.           ChkChr("YN", ;
  1960.                  "Y-Yes or N-No Only", ;
  1961.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  1962.       @ 10,15 WINGET mDummy4 PICTURE "!" VALIDBLOCK ;
  1963.       {|| ;
  1964.           ChkChr("YN", ;
  1965.                  "Y-Yes or N-No Only", ;
  1966.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  1967.       @ 10,19 WINGET mDummy5 PICTURE "!" VALIDBLOCK ;
  1968.       {|| ;
  1969.           ChkChr("YN", ;
  1970.                  "Y-Yes or N-No Only", ;
  1971.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  1972.       @ 10,23 WINGET mDummy6 PICTURE "!" VALIDBLOCK ;
  1973.       {|| ;
  1974.           ChkChr("YN", ;
  1975.                  "Y-Yes or N-No Onl", ;
  1976.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  1977.       @ 15,02 WINGET mColor MENU USING {"Red","Green","Blue","Yellow","Orange"}
  1978.       @ 17,23 WINGET nColor DROPDOWN USING {"Red","Green","Blue","Yellow","Orange"}
  1979.  
  1980.       ReadGets(@GetList)
  1981.  
  1982.       IF LASTKEY() == K_ESC
  1983.          EXIT
  1984.       ENDIF
  1985.  
  1986.       ** You may want to do some validations here **
  1987.       ** before executing the next proc.          **
  1988.       Hand036()
  1989.    ENDDO
  1990.  
  1991.    VarPop()
  1992.    WINDOW REMOVE
  1993.  
  1994. *******************************************************************************
  1995. ** CALLED BY: Hand Code:  HAND036   Dialog Prompt                            **
  1996. **   Comment: Show Progress Thermometer                                      **
  1997. *******************************************************************************
  1998. PROCEDURE Dlog037()
  1999.  
  2000.    VarPush("DLOG037")
  2001.  
  2002.    SETCOLOR(Var(WNDW_CLR_))
  2003.    @ 19,24,22,67 WINDOW STYLE "3+"
  2004.  
  2005.    @ 01,02 WINSAY "Processing..."
  2006.  
  2007.    SetMsgLin("▓ Processing--Please Wait ▓ ESC-Exit ▓")
  2008.  
  2009.    Hand038()
  2010.  
  2011.    VarPop()
  2012.    WINDOW REMOVE
  2013.  
  2014. *******************************************************************************
  2015. ** CALLED BY: Selection << WinPush()/WinPop() >> in Proc:  MENU017           **
  2016. **   Comment: Winpush/Pop Sample                                             **
  2017. *******************************************************************************
  2018. PROCEDURE Dlog041()
  2019.  
  2020.    VarPush("DLOG041")
  2021.  
  2022.    SETCOLOR(Var(WNDW_CLR_))
  2023.    @ 09,21,16,68 WINDOW STYLE "3+"
  2024.  
  2025.    SETCOLOR(Var(WMSG_CLR_))
  2026.    @ 01,02 WINSAY "WinPush()ing Displays Windows on the Screen"
  2027.    @ 02,02 WINSAY "WinPop()ing Removes the Last Window from the"
  2028.    @ 03,02 WINSAY "Screen."
  2029.    SETCOLOR(Var(WNDW_CLR_))
  2030.    @ 05,02 WINSAY "This Window was WinPush()ed onto the Screen."
  2031.    @ 06,02 WINSAY "Press ESC to WinPop() This Window."
  2032.  
  2033.    DO WHILE .T.
  2034.       SetMsgLin("▓ WinPush()/WinPop() Function Information ▓ ESC-Exit ▓")
  2035.  
  2036.       WaitKey(0)     // Wait for KeyStroke
  2037.  
  2038.       IF LASTKEY() == K_ESC
  2039.          EXIT
  2040.       ENDIF
  2041.  
  2042.       ** Add a command here to execute something after this **
  2043.       ** dialog box.                                        **
  2044.    ENDDO
  2045.  
  2046.    VarPop()
  2047.    WINDOW REMOVE
  2048.  
  2049. *******************************************************************************
  2050. ** CALLED BY: Selection << Center() >> in Proc:  MENU017                     **
  2051. **   Comment: Center() Sample                                                **
  2052. *******************************************************************************
  2053. PROCEDURE Dlog042()
  2054.  
  2055.    VarPush("DLOG042")
  2056.  
  2057.    SETCOLOR(Var(WNDW_CLR_))
  2058.    @ 10,24,17,68 WINDOW STYLE "3+"
  2059.  
  2060.    SETCOLOR(Var(WMSG_CLR_))
  2061.    @ 01,02 WINSAY "The Builder Center() Function is Designed"
  2062.    @ 02,02 WINSAY "to be Useable Inside a Window."
  2063.    SETCOLOR(Var(WNDW_CLR_))
  2064.    @ 06,02 WINSAY "Press Any Key to Remove Window."
  2065.  
  2066.    SetMsgLin("▓ Center() Function Information ▓ ESC-Exit ▓")
  2067.  
  2068.    Hand043()
  2069.  
  2070.    VarPop()
  2071.    WINDOW REMOVE
  2072.  
  2073. *******************************************************************************
  2074. ** CALLED BY: Selection << Message() >> in Proc:  MENU017                    **
  2075. **   Comment: Message Sample                                                 **
  2076. *******************************************************************************
  2077. PROCEDURE Dlog044()
  2078.  
  2079.    VarPush("DLOG044")
  2080.  
  2081.    SETCOLOR(Var(WNDW_CLR_))
  2082.    @ 11,20,17,68 WINDOW STYLE "3+"
  2083.  
  2084.    SETCOLOR(Var(WMSG_CLR_))
  2085.    @ 01,02 WINSAY "The Message() Function Simply Displays a"
  2086.    @ 02,02 WINSAY "Screen Message.  It is Most Useful When"
  2087.    @ 03,02 WINSAY "One Screen Line is Used for Several Messages."
  2088.    SETCOLOR(Var(WNDW_CLR_))
  2089.  
  2090.    SetMsgLin("▓ Message() Function Information ▓ ESC-Exit ▓")
  2091.  
  2092.    Hand045()
  2093.  
  2094.    VarPop()
  2095.    WINDOW REMOVE
  2096.  
  2097. *******************************************************************************
  2098. ** CALLED BY: Selection << SetMsgLin() >> in Proc:  MENU017                  **
  2099. **   Comment: SetMsgLin() Sample                                             **
  2100. *******************************************************************************
  2101. PROCEDURE Dlog051()
  2102.  
  2103.    VarPush("DLOG051")
  2104.  
  2105.    SETCOLOR(Var(WNDW_CLR_))
  2106.    @ 05,03,22,50 WINDOW STYLE "3+"
  2107.  
  2108.    SETCOLOR(Var(WMSG_CLR_))
  2109.    @ 01,02 WINSAY "The SetMsgLin() Function Works Like the"
  2110.    @ 02,02 WINSAY "Clipper SetColor() Function, Except that"
  2111.    @ 03,02 WINSAY "It Saves/Changes the Bottom Screen Line"
  2112.    @ 04,02 WINSAY "Instead of the Screen Color."
  2113.    SETCOLOR(Var(WNDW_CLR_))
  2114.    @ 06,02 WINSAY "For Example:"
  2115.    @ 07,07 WINSAY "cLin24 := SetMsgLin()"
  2116.    @ 09,02 WINSAY 'Would Set "cLin24" Equal to the Text From'
  2117.    @ 10,02 WINSAY "Screen Line 24.  And:"
  2118.    @ 11,07 WINSAY 'Lin24 := SetMsgLin("▓ Enter Stuff ▓")'
  2119.    @ 13,02 WINSAY "Would Save the Contents of Screen Line 24"
  2120.    @ 14,02 WINSAY 'in "cLin24" and Set Line 24 to the Character'
  2121.    @ 15,02 WINSAY "Data Passed."
  2122.  
  2123.    *SetMsgLin("▓ Enter Your Own Message Line Here ▓ ESC-Exit ▓")
  2124.  
  2125.    Hand105()
  2126.  
  2127.    VarPop()
  2128.    WINDOW REMOVE
  2129.  
  2130. *******************************************************************************
  2131. ** CALLED BY: Selection << Thermometr() >> in Proc:  MENU017                 **
  2132. **   Comment: Thermometr() Sample                                            **
  2133. *******************************************************************************
  2134. PROCEDURE Dlog052()
  2135.  
  2136.    VarPush("DLOG052")
  2137.  
  2138.    SETCOLOR(Var(WNDW_CLR_))
  2139.    @ 14,25,17,68 WINDOW STYLE "3+"
  2140.  
  2141.    @ 01,02 WINSAY "Processing..."
  2142.  
  2143.    SetMsgLin("▓ Processing--Please Wait ▓ ESC-Exit ▓")
  2144.  
  2145.    Hand053()
  2146.  
  2147.    VarPop()
  2148.    WINDOW REMOVE
  2149.  
  2150. *******************************************************************************
  2151. ** CALLED BY: Selection << Gen_Maint() >> in Proc:  MENU016                  **
  2152. **   Comment: Gen_Maint() Lib Func                                           **
  2153. *******************************************************************************
  2154. PROCEDURE Dlog057()
  2155.    LOCAL x,GetList := {},mOpts
  2156.  
  2157.    VarPush("DLOG057")
  2158.  
  2159.    SETCOLOR(Var(WNDW_CLR_))
  2160.    @ 10,09,18,56 WINDOW STYLE "3+"
  2161.  
  2162.    SETCOLOR(Var(WMSG_CLR_))
  2163.    @ 01,02 WINSAY "The Gen_Maint() (Generic Mainenance) Library"
  2164.    @ 02,02 WINSAY "Function is a Full Feature File Maintenance"
  2165.    @ 03,02 WINSAY "Routine that is Typically Created by the"
  2166.    @ 04,02 WINSAY "Builder Code Generator (Not by Hand)."
  2167.    SETCOLOR(Var(WNDW_CLR_))
  2168.    @ 06,02 WINSAY "Enter the Allowed Menu Options:"
  2169.  
  2170.    mOpts := "ACDF"
  2171.  
  2172.    DO WHILE .T.
  2173.       SetMsgLin("▓ Enter A-Add, C-Change, D-Delete, F-Find ▓ ESC-Exit ▓")
  2174.  
  2175.       @ 06,34 WINGET mOpts PICTURE "!!!!"
  2176.  
  2177.       ReadGets(@GetList)
  2178.  
  2179.       IF LASTKEY() == K_ESC
  2180.          EXIT
  2181.       ENDIF
  2182.  
  2183.       ** You may want to do some validations here **
  2184.       ** before executing the next proc.          **
  2185.       Hand142(mOpts)
  2186.    ENDDO
  2187.  
  2188.    VarPop()
  2189.    WINDOW REMOVE
  2190.  
  2191. *******************************************************************************
  2192. ** CALLED BY: Selection << Rel_Maint() >> in Proc:  MENU016                  **
  2193. **   Comment: Rel_Maint() Sample                                             **
  2194. *******************************************************************************
  2195. PROCEDURE Dlog059()
  2196.  
  2197.    VarPush("DLOG059")
  2198.  
  2199.    SETCOLOR(Var(WNDW_CLR_))
  2200.    @ 11,08,19,57 WINDOW STYLE "3+"
  2201.  
  2202.    SETCOLOR(Var(WMSG_CLR_))
  2203.    @ 01,02 WINSAY "The Rel_Maint() Function is a File Maintenance"
  2204.    @ 02,02 WINSAY "Function That Works Like the Gen_Maint()"
  2205.    @ 03,02 WINSAY "Function, Except that Rel_Maint() is Used"
  2206.    @ 04,02 WINSAY "to Edit the Many Records of a One-to-Many"
  2207.    @ 05,02 WINSAY "Database Relationship."
  2208.    SETCOLOR(Var(WNDW_CLR_))
  2209.    @ 07,02 WINSAY "Press <Space> for Sample or ESC to Exit"
  2210.  
  2211.    SetMsgLin("▓ Press Any Key for Rel_Maint() Sample ▓ ESC-Exit ▓")
  2212.  
  2213.    Hand060()
  2214.  
  2215.    VarPop()
  2216.    WINDOW REMOVE
  2217.  
  2218. *******************************************************************************
  2219. ** CALLED BY: Hand Code:  HAND060   Rel_Maint() Sample                       **
  2220. **   Comment: Rel_Maint() Sample                                             **
  2221. *******************************************************************************
  2222. PROCEDURE Dlog063()
  2223.  
  2224.    VarPush("DLOG063")
  2225.  
  2226.    SETCOLOR(Var(WNDW_CLR_))
  2227.    @ 09,06,16,50 WINDOW STYLE "3+"
  2228.  
  2229.    SETCOLOR(Var(WMSG_CLR_))
  2230.    @ 01,02 WINSAY "The Following Windows Will Present a"
  2231.    @ 02,02 WINSAY "Picklist of Cities.  Following it Will be"
  2232.    @ 03,02 WINSAY "a Rel_Maint() to Enter a List of Friends"
  2233.    @ 04,02 WINSAY "in That City."
  2234.    SETCOLOR(Var(WNDW_CLR_))
  2235.    @ 06,02 WINSAY "Press Any Key to Continue"
  2236.  
  2237.    SetMsgLin("▓ Press Any Key to Continue ▓ ESC-Exit ▓")
  2238.  
  2239.    Hand139()
  2240.  
  2241.    VarPop()
  2242.    WINDOW REMOVE
  2243.  
  2244. *******************************************************************************
  2245. ** CALLED BY: Selection << AddPrompt()/AbMenu() >> in Proc:  MENU017         **
  2246. **   Comment: AddPrompt() Sample                                             **
  2247. *******************************************************************************
  2248. PROCEDURE Dlog064()
  2249.  
  2250.    VarPush("DLOG064")
  2251.  
  2252.    SETCOLOR(Var(WNDW_CLR_))
  2253.    @ 11,05,22,54 WINDOW STYLE "3+"
  2254.  
  2255.    SETCOLOR(Var(WMSG_CLR_))
  2256.    @ 01,02 WINSAY "The Builder Menu System Consists of Two"
  2257.    @ 02,02 WINSAY "Functions.  The AddPrompt() Function Which"
  2258.    @ 03,02 WINSAY "Works Like the Clipper @..PROMPT Command and"
  2259.    @ 04,02 WINSAY "the AbMenu() Function Which Works Like the"
  2260.    @ 05,02 WINSAY "Clipper MENU TO .. Command."
  2261.    SETCOLOR(Var(WNDW_CLR_))
  2262.    @ 07,02 WINSAY "The Menu System is Mouseable.  This Demo"
  2263.    @ 08,02 WINSAY "Program's Menus Use The Builder Menu System."
  2264.    @ 09,02 WINSAY "Normally Builder Writes All the Menu Source"
  2265.    @ 10,02 WINSAY "Code.  Look at the Program Source for Samples."
  2266.  
  2267.    DO WHILE .T.
  2268.       SetMsgLin("▓ Builder Menu Functions ▓ ESC-Exit ▓")
  2269.  
  2270.       WaitKey(0)     // Wait for KeyStroke
  2271.  
  2272.       IF LASTKEY() == K_ESC
  2273.          EXIT
  2274.       ENDIF
  2275.  
  2276.       ** Add a command here to execute something after this **
  2277.       ** dialog box.                                        **
  2278.    ENDDO
  2279.  
  2280.    VarPop()
  2281.    WINDOW REMOVE
  2282.  
  2283. *******************************************************************************
  2284. ** CALLED BY: Selection << Ask() >> in Proc:  MENU017                        **
  2285. **   Comment: Ask() Sample                                                   **
  2286. *******************************************************************************
  2287. PROCEDURE Dlog065()
  2288.  
  2289.    VarPush("DLOG065")
  2290.  
  2291.    SETCOLOR(Var(WNDW_CLR_))
  2292.    @ 11,07,18,54 WINDOW STYLE "3+"
  2293.  
  2294.    @ 01,02 WINSAY "The Builder Ask() Function Allows a Question"
  2295.    @ 02,02 WINSAY "to Be Asked.  The Ask() Function Erases"
  2296.    @ 03,02 WINSAY "it's Prompt When Finished."
  2297.    @ 04,02 WINSAY "Sample:"
  2298.  
  2299.    SetMsgLin("▓ Press Y-Yes or N-No ▓ ESC-Exit ▓")
  2300.  
  2301.    Hand066()
  2302.  
  2303.    VarPop()
  2304.    WINDOW REMOVE
  2305.  
  2306. *******************************************************************************
  2307. ** CALLED BY: Selection << AskMenu() >> in Proc:  MENU017                    **
  2308. **   Comment: AskMenu() Sample                                               **
  2309. *******************************************************************************
  2310. PROCEDURE Dlog067()
  2311.  
  2312.    VarPush("DLOG067")
  2313.  
  2314.    SETCOLOR(Var(WNDW_CLR_))
  2315.    @ 11,08,20,57 WINDOW STYLE "3+"
  2316.  
  2317.    @ 01,02 WINSAY "The AskMenu() Function Works Much Like the"
  2318.    @ 02,02 WINSAY "Ask() Function Except That Instead of Pressing"
  2319.    @ 03,02 WINSAY "a Single Key The User Can Select From a Menu."
  2320.    @ 04,02 WINSAY "Sample:"
  2321.  
  2322.    SETCOLOR(Var(WMSG_CLR_))
  2323.    @ 06,02 WINSAY "What is Your Favorite Computer Language?"
  2324.    SETCOLOR(Var(WNDW_CLR_))
  2325.  
  2326.    SetMsgLin("▓ Use Arrows to Move ▓ ENTER-Select ▓ ESC-Exit ▓")
  2327.  
  2328.    Hand068()
  2329.  
  2330.    VarPop()
  2331.    WINDOW REMOVE
  2332.  
  2333. *******************************************************************************
  2334. ** CALLED BY: Selection << Plist() >> in Proc:  MENU016                      **
  2335. **   Comment: Plist() Sample                                                 **
  2336. *******************************************************************************
  2337. PROCEDURE Dlog069()
  2338.  
  2339.    VarPush("DLOG069")
  2340.  
  2341.    SETCOLOR(Var(WNDW_CLR_))
  2342.    @ 08,02,21,51 WINDOW STYLE "3+"
  2343.  
  2344.    SETCOLOR(Var(WMSG_CLR_))
  2345.    @ 01,02 WINSAY "The Builder Plist() (Picklist) Function is"
  2346.    @ 02,02 WINSAY "a Very Powerful Database Scanning Tool."
  2347.    @ 03,02 WINSAY "There are Many Options in Plist(), Most"
  2348.    @ 04,02 WINSAY "Can be Set Using Builder Alone."
  2349.    SETCOLOR(Var(WNDW_CLR_))
  2350.    @ 06,02 WINSAY "Setting Both a 'Bounded by' AND a QWERTY"
  2351.    @ 07,02 WINSAY "Plist(), However, Requires Adding 3 Parameters"
  2352.    @ 08,02 WINSAY "to the Plist() Call After Builder Creates"
  2353.    @ 09,02 WINSAY "the Source Code."
  2354.  
  2355.    SETCOLOR(Var(WMSG_CLR_))
  2356.    @ 11,02 WINSAY 'See The "Picklist" Menu Selection Under'
  2357.    @ 12,02 WINSAY '"About Builder" also.'
  2358.    SETCOLOR(Var(WNDW_CLR_))
  2359.  
  2360.    DO WHILE .T.
  2361.       SetMsgLin("▓ Plist() Function Information ▓ ESC-Exit ▓")
  2362.  
  2363.       WaitKey(0)     // Wait for KeyStroke
  2364.  
  2365.       IF LASTKEY() == K_ESC
  2366.          EXIT
  2367.       ENDIF
  2368.  
  2369.       ** Add a command here to execute something after this **
  2370.       ** dialog box.                                        **
  2371.    ENDDO
  2372.  
  2373.    VarPop()
  2374.    WINDOW REMOVE
  2375.  
  2376. *******************************************************************************
  2377. ** CALLED BY: Selection << Browser() >> in Proc:  MENU016                    **
  2378. **   Comment: Browser() Sample                                               **
  2379. *******************************************************************************
  2380. PROCEDURE Dlog070()
  2381.  
  2382.    VarPush("DLOG070")
  2383.  
  2384.    SETCOLOR(Var(WNDW_CLR_))
  2385.    @ 13,11,19,57 WINDOW STYLE "3+"
  2386.  
  2387.    SETCOLOR(Var(WMSG_CLR_))
  2388.    @ 01,02 WINSAY "Browser() is a VERY Simple Database Browse."
  2389.    @ 02,02 WINSAY "It is So Simple, In Fact, That DbEdit() is"
  2390.    @ 03,02 WINSAY "Used Instead of tBrowse Code."
  2391.    SETCOLOR(Var(WNDW_CLR_))
  2392.    @ 05,02 WINSAY "Press <Space> for Sample.  ESC to Exit"
  2393.  
  2394.    SetMsgLin("▓ Press <Space> to Start ▓ ESC-Exit ▓")
  2395.  
  2396.    Hand071()
  2397.  
  2398.    VarPop()
  2399.    WINDOW REMOVE
  2400.  
  2401. *******************************************************************************
  2402. ** CALLED BY: Selection << Save_It() >> in Proc:  MENU016                    **
  2403. **   Comment: Save_It() Sample                                               **
  2404. *******************************************************************************
  2405. PROCEDURE Dlog072()
  2406.  
  2407.    VarPush("DLOG072")
  2408.  
  2409.    SETCOLOR(Var(WNDW_CLR_))
  2410.    @ 11,02,21,49 WINDOW STYLE "3+"
  2411.  
  2412.    SETCOLOR(Var(WMSG_CLR_))
  2413.    @ 01,02 WINSAY "The Save_It() Function Allows Builder"
  2414.    @ 02,02 WINSAY "Applications to ADD and CHANGE databases"
  2415.    @ 03,02 WINSAY "One Record at a Time, Rather Than One Field"
  2416.    @ 04,02 WINSAY "At a Time."
  2417.    SETCOLOR(Var(WNDW_CLR_))
  2418.    @ 06,02 WINSAY "Optionally Use a Builder Delete Index and"
  2419.    @ 07,02 WINSAY "Recycle Your Deleted Records."
  2420.  
  2421.    SETCOLOR(Var(WMSG_CLR_))
  2422.    @ 09,02 WINSAY "Save_It() Locks/Unlocks Records on a Network"
  2423.    SETCOLOR(Var(WNDW_CLR_))
  2424.  
  2425.    DO WHILE .T.
  2426.       SetMsgLin("▓ Save_It() Function Information ▓ ESC-Exit ▓")
  2427.  
  2428.       WaitKey(0)     // Wait for KeyStroke
  2429.  
  2430.       IF LASTKEY() == K_ESC
  2431.          EXIT
  2432.       ENDIF
  2433.  
  2434.       ** Add a command here to execute something after this **
  2435.       ** dialog box.                                        **
  2436.    ENDDO
  2437.  
  2438.    VarPop()
  2439.    WINDOW REMOVE
  2440.  
  2441. *******************************************************************************
  2442. ** CALLED BY: Selection << Fld_Repl() >> in Proc:  MENU016                   **
  2443. **   Comment: Fld_Repl() Sample                                              **
  2444. *******************************************************************************
  2445. PROCEDURE Dlog073()
  2446.  
  2447.    VarPush("DLOG073")
  2448.  
  2449.    SETCOLOR(Var(WNDW_CLR_))
  2450.    @ 15,16,19,57 WINDOW STYLE "3+"
  2451.  
  2452.    @ 01,02 WINSAY "Use Fld_Repl() Instead of the Clipper"
  2453.    @ 02,02 WINSAY "REPLACE Command.  Fld_Repl() Will Lock"
  2454.    @ 03,02 WINSAY "and Unlock Records on a Network."
  2455.  
  2456.    DO WHILE .T.
  2457.       SetMsgLin("▓ Fld_Repl() Function Information ▓ ESC-Exit ▓")
  2458.  
  2459.       WaitKey(0)     // Wait for KeyStroke
  2460.  
  2461.       IF LASTKEY() == K_ESC
  2462.          EXIT
  2463.       ENDIF
  2464.  
  2465.       ** Add a command here to execute something after this **
  2466.       ** dialog box.                                        **
  2467.    ENDDO
  2468.  
  2469.    VarPop()
  2470.    WINDOW REMOVE
  2471.  
  2472. *******************************************************************************
  2473. ** CALLED BY: Selection << iSeek() >> in Proc:  MENU016                      **
  2474. **   Comment: iSeek() Sample                                                 **
  2475. *******************************************************************************
  2476. PROCEDURE Dlog074()
  2477.  
  2478.    VarPush("DLOG074")
  2479.  
  2480.    SETCOLOR(Var(WNDW_CLR_))
  2481.    @ 16,15,22,57 WINDOW STYLE "3+"
  2482.  
  2483.    SETCOLOR(Var(WMSG_CLR_))
  2484.    @ 01,02 WINSAY "The iSeek() Function Does an Indexed"
  2485.    @ 02,02 WINSAY "Database Search.  Pass a Database Alias"
  2486.    @ 03,02 WINSAY "and an Index Order."
  2487.    SETCOLOR(Var(WNDW_CLR_))
  2488.    @ 05,02 WINSAY "One Line of Code to Replace 4 or 5"
  2489.  
  2490.    DO WHILE .T.
  2491.       SetMsgLin("▓ iSeek() Function Information ▓ ESC-Exit ▓")
  2492.  
  2493.       WaitKey(0)     // Wait for KeyStroke
  2494.  
  2495.       IF LASTKEY() == K_ESC
  2496.          EXIT
  2497.       ENDIF
  2498.  
  2499.       ** Add a command here to execute something after this **
  2500.       ** dialog box.                                        **
  2501.    ENDDO
  2502.  
  2503.    VarPop()
  2504.    WINDOW REMOVE
  2505.  
  2506. *******************************************************************************
  2507. ** CALLED BY: Selection << PckVld() >> in Proc:  MENU015                     **
  2508. **   Comment: PckVld() Sample                                                **
  2509. *******************************************************************************
  2510. PROCEDURE Dlog075()
  2511.    LOCAL x,GetList := {},mCity
  2512.  
  2513.    VarPush("DLOG075")
  2514.  
  2515.    SETCOLOR(Var(WNDW_CLR_))
  2516.    @ 12,12,20,57 WINDOW STYLE "3+"
  2517.  
  2518.    SETCOLOR(Var(WMSG_CLR_))
  2519.    @ 01,02 WINSAY "PckVld() Forces Entry into a Field to be"
  2520.    @ 02,02 WINSAY "Controlled by a Look Up Table by Providing"
  2521.    @ 03,02 WINSAY "a Plist() on Invalid Entries."
  2522.    SETCOLOR(Var(WNDW_CLR_))
  2523.    @ 05,02 WINSAY "City:"
  2524.    @ 07,02 WINSAY "Easily Set Up PckVld()'s from Builder!"
  2525.  
  2526.    mCity := Space(25)
  2527.  
  2528.    DO WHILE .T.
  2529.       SetMsgLin("▓ Enter a Valid City Name ▓ ESC-Exit ▓")
  2530.  
  2531.       @ 05,08 WINGET mCity PICTURE "@!" VALIDBLOCK ;
  2532.       {|| ;
  2533.           PckVld("CITIES",1,2,.F., ;
  2534.                  "City", ;
  2535.                  .T.)}
  2536.  
  2537.       ReadGets(@GetList)
  2538.  
  2539.       IF LASTKEY() == K_ESC
  2540.          EXIT
  2541.       ENDIF
  2542.  
  2543.       ** Add a command here to execute something after this **
  2544.       ** dialog box.                                        **
  2545.    ENDDO
  2546.  
  2547.    VarPop()
  2548.    WINDOW REMOVE
  2549.  
  2550. *******************************************************************************
  2551. ** CALLED BY: Selection << ChkChr() >> in Proc:  MENU015                     **
  2552. **   Comment: ChkChk() Sample                                                **
  2553. *******************************************************************************
  2554. PROCEDURE Dlog076()
  2555.    LOCAL x,GetList := {},mPart_Typ
  2556.  
  2557.    VarPush("DLOG076")
  2558.  
  2559.    SETCOLOR(Var(WNDW_CLR_))
  2560.    @ 13,15,19,57 WINDOW STYLE "3+"
  2561.  
  2562.    SETCOLOR(Var(WMSG_CLR_))
  2563.    @ 01,02 WINSAY "The ChkChr() Function Forces Input to a"
  2564.    @ 02,02 WINSAY "GET to Match a Substring Search."
  2565.    SETCOLOR(Var(WNDW_CLR_))
  2566.    @ 04,02 WINSAY "Enter Part Type:"
  2567.  
  2568.    mPart_Typ := " "
  2569.  
  2570.    DO WHILE .T.
  2571.       SetMsgLin("▓ Enter Part Type B-Bolt, N-Nut, or S-Screw ▓ ESC-Exit ▓")
  2572.  
  2573.       @ 04,19 WINGET mPart_Typ PICTURE "!" VALIDBLOCK ;
  2574.       {|| ;
  2575.           ChkChr("BNS", ;
  2576.                  "B-Bolt, N-Nut, or S-Screw Only", ;
  2577.                  WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  2578.  
  2579.       ReadGets(@GetList)
  2580.  
  2581.       IF LASTKEY() == K_ESC
  2582.          EXIT
  2583.       ENDIF
  2584.  
  2585.       ** Add a command here to execute something after this **
  2586.       ** dialog box.                                        **
  2587.    ENDDO
  2588.  
  2589.    VarPop()
  2590.    WINDOW REMOVE
  2591.  
  2592. *******************************************************************************
  2593. ** CALLED BY: Selection << Show_Text() >> in Proc:  MENU015                  **
  2594. **   Comment: Show_Text() Sample                                             **
  2595. *******************************************************************************
  2596. PROCEDURE Dlog077()
  2597.  
  2598.    VarPush("DLOG077")
  2599.  
  2600.    SETCOLOR(Var(WNDW_CLR_))
  2601.    @ 11,07,22,53 WINDOW STYLE "3+"
  2602.  
  2603.    SETCOLOR(Var(WMSG_CLR_))
  2604.    @ 01,02 WINSAY "The Show_Text() Function Allows the Display"
  2605.    @ 02,02 WINSAY "of Data from a Look-Up Table if the Search"
  2606.    @ 03,02 WINSAY "Key Within a GET Stream is Changed."
  2607.    SETCOLOR(Var(WNDW_CLR_))
  2608.    @ 05,02 WINSAY "For Example, Displaying a Part Description"
  2609.    @ 06,02 WINSAY "When GETing a Part Number."
  2610.    @ 08,02 WINSAY "Calls to This Function Must be Written by"
  2611.    @ 09,02 WINSAY "Hand, Builder Does Not Create Show_Txt()"
  2612.    @ 10,02 WINSAY "Calls."
  2613.  
  2614.    DO WHILE .T.
  2615.       SetMsgLin("▓ Show_Text() Function Information ▓ ESC-Exit ▓")
  2616.  
  2617.       WaitKey(0)     // Wait for KeyStroke
  2618.  
  2619.       IF LASTKEY() == K_ESC
  2620.          EXIT
  2621.       ENDIF
  2622.  
  2623.       ** Add a command here to execute something after this **
  2624.       ** dialog box.                                        **
  2625.    ENDDO
  2626.  
  2627.    VarPop()
  2628.    WINDOW REMOVE
  2629.  
  2630. *******************************************************************************
  2631. ** CALLED BY: Selection << InFile() >> in Proc:  MENU015                     **
  2632. **   Comment: InFile() Sample                                                **
  2633. *******************************************************************************
  2634. PROCEDURE Dlog078()
  2635.    LOCAL x,GetList := {},mZip
  2636.  
  2637.    VarPush("DLOG078")
  2638.  
  2639.    SETCOLOR(Var(WNDW_CLR_))
  2640.    @ 13,09,22,53 WINDOW STYLE "3+"
  2641.  
  2642.    SETCOLOR(Var(WMSG_CLR_))
  2643.    @ 01,02 WINSAY "The InFile() Function Forces Input to a"
  2644.    @ 02,02 WINSAY "GET to be Located in a Look Up Table."
  2645.    SETCOLOR(Var(WNDW_CLR_))
  2646.    @ 04,02 WINSAY "Example, Enter a Zip Code From the CITIES"
  2647.    @ 05,02 WINSAY "Database."
  2648.    @ 07,02 WINSAY "Zip Code:"
  2649.  
  2650.    mZip := Space(09)
  2651.  
  2652.    DO WHILE .T.
  2653.       SetMsgLin("▓ Enter Zip Code ▓ ESC-Exit ▓")
  2654.  
  2655.       @ 07,12 WINGET mZip PICTURE "@R 99999 9999" VALIDBLOCK ;
  2656.       {|| ;
  2657.           InFile("CITIES",1, ;
  2658.                  "Zip Code Not Found in CITIES", ;
  2659.                  WinBott()-1,WinLeft()+2,WinRight()-2,.T.,Var(WERR_CLR_))}
  2660.  
  2661.       ReadGets(@GetList)
  2662.  
  2663.       IF LASTKEY() == K_ESC
  2664.          EXIT
  2665.       ENDIF
  2666.  
  2667.       ** Add a command here to execute something after this **
  2668.       ** dialog box.                                        **
  2669.    ENDDO
  2670.  
  2671.    VarPop()
  2672.    WINDOW REMOVE
  2673.  
  2674. *******************************************************************************
  2675. ** CALLED BY: Selection << DupChk() >> in Proc:  MENU015                     **
  2676. **   Comment: DupChk() Sample                                                **
  2677. *******************************************************************************
  2678. PROCEDURE Dlog079()
  2679.  
  2680.    VarPush("DLOG079")
  2681.  
  2682.    SETCOLOR(Var(WNDW_CLR_))
  2683.    @ 15,13,22,57 WINDOW STYLE "3+"
  2684.  
  2685.    SETCOLOR(Var(WMSG_CLR_))
  2686.    @ 01,02 WINSAY "The DupChk() Function is Useful When You"
  2687.    @ 02,02 WINSAY "Need to Maintain 2 Indexes on a Database,"
  2688.    @ 03,02 WINSAY "Both Without Duplicates."
  2689.    SETCOLOR(Var(WNDW_CLR_))
  2690.    @ 05,02 WINSAY "DupChk() Force Entry Into a GET to Not"
  2691.    @ 06,02 WINSAY "Duplicate an Existing Record."
  2692.  
  2693.    DO WHILE .T.
  2694.       SetMsgLin("▓ Enter State Code ▓ ESC-Exit ▓")
  2695.  
  2696.       WaitKey(0)     // Wait for KeyStroke
  2697.  
  2698.       IF LASTKEY() == K_ESC
  2699.          EXIT
  2700.       ENDIF
  2701.  
  2702.       ** Add a command here to execute something after this **
  2703.       ** dialog box.                                        **
  2704.    ENDDO
  2705.  
  2706.    VarPop()
  2707.    WINDOW REMOVE
  2708.  
  2709. *******************************************************************************
  2710. ** CALLED BY: Selection << GenVld() >> in Proc:  MENU015                     **
  2711. **   Comment: GenVld() Sample                                                **
  2712. *******************************************************************************
  2713. PROCEDURE Dlog080()
  2714.    LOCAL x,GetList := {},mDate
  2715.  
  2716.    VarPush("DLOG080")
  2717.  
  2718.    SETCOLOR(Var(WNDW_CLR_))
  2719.    @ 13,06,22,55 WINDOW STYLE "3+"
  2720.  
  2721.    SETCOLOR(Var(WMSG_CLR_))
  2722.    @ 01,02 WINSAY "The GenVld() (Generic Valid) Function Allows"
  2723.    @ 02,02 WINSAY "ANY Logical Expression to Be Used for GET"
  2724.    @ 03,02 WINSAY "Validation."
  2725.    SETCOLOR(Var(WNDW_CLR_))
  2726.    @ 05,02 WINSAY "Pass a Logical Expression and an Error Message"
  2727.    @ 07,02 WINSAY "Todays Date:"
  2728.  
  2729.    mDate := Ctod("")
  2730.  
  2731.    DO WHILE .T.
  2732.       SetMsgLin("▓ Enter Current Date ▓ ESC-Exit ▓")
  2733.  
  2734.       @ 07,15 WINGET mDate VALIDBLOCK ;
  2735.       {|| ;
  2736.           GenVld(GETACTIVE():varGet()==Date(), ;
  2737.                  "Not Equal to Your Computer Date", ;
  2738.                  WinBott()-1,WinLeft()+2,WinRight()-2,.T.,Var(WERR_CLR_))}
  2739.  
  2740.       ReadGets(@GetList)
  2741.  
  2742.       IF LASTKEY() == K_ESC
  2743.          EXIT
  2744.       ENDIF
  2745.  
  2746.       ** Add a command here to execute something after this **
  2747.       ** dialog box.                                        **
  2748.    ENDDO
  2749.  
  2750.    VarPop()
  2751.    WINDOW REMOVE
  2752.  
  2753. *******************************************************************************
  2754. ** CALLED BY: Selection << Req() >> in Proc:  MENU015                        **
  2755. **   Comment: Req() Sample                                                   **
  2756. *******************************************************************************
  2757. PROCEDURE Dlog081()
  2758.    LOCAL x,GetList := {},mStuff
  2759.  
  2760.    VarPush("DLOG081")
  2761.  
  2762.    SETCOLOR(Var(WNDW_CLR_))
  2763.    @ 16,10,22,56 WINDOW STYLE "3+"
  2764.  
  2765.    SETCOLOR(Var(WMSG_CLR_))
  2766.    @ 01,02 WINSAY "The Req() Function Simply Forces Entry"
  2767.    @ 02,02 WINSAY "Into a GET.  No Further Validation is Done."
  2768.    SETCOLOR(Var(WNDW_CLR_))
  2769.    @ 04,02 WINSAY "Enter Stuff:"
  2770.  
  2771.    mStuff := Space(20)
  2772.  
  2773.    DO WHILE .T.
  2774.       SetMsgLin("▓ Enter Something ▓ ESC-Exit ▓")
  2775.  
  2776.       @ 04,15 WINGET mStuff VALIDBLOCK ;
  2777.       {|| ;
  2778.           Req("Enter Something, Anything", ;
  2779.               WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  2780.  
  2781.       ReadGets(@GetList)
  2782.  
  2783.       IF LASTKEY() == K_ESC
  2784.          EXIT
  2785.       ENDIF
  2786.  
  2787.       ** Add a command here to execute something after this **
  2788.       ** dialog box.                                        **
  2789.    ENDDO
  2790.  
  2791.    VarPop()
  2792.    WINDOW REMOVE
  2793.  
  2794. *******************************************************************************
  2795. ** CALLED BY: Selection << Open_Fil() >> in Proc:  MENU016                   **
  2796. **   Comment: Open_Fil() Sample                                              **
  2797. *******************************************************************************
  2798. PROCEDURE Dlog082()
  2799.  
  2800.    VarPush("DLOG082")
  2801.  
  2802.    SETCOLOR(Var(WNDW_CLR_))
  2803.    @ 12,01,22,50 WINDOW STYLE "3+"
  2804.  
  2805.    SETCOLOR(Var(WMSG_CLR_))
  2806.    @ 01,02 WINSAY "The Open_Fil() Function is Replacement for"
  2807.    @ 02,02 WINSAY "Clipper's USE Command.  Open_Fil() Tests for"
  2808.    @ 03,02 WINSAY "Several Error Conditions and Displays an"
  2809.    @ 04,02 WINSAY "Error Message If the Database Cannot Be"
  2810.    @ 05,02 WINSAY "Opened."
  2811.    SETCOLOR(Var(WNDW_CLR_))
  2812.    @ 07,02 WINSAY "Open_Fil() Will Either Return a Logical"
  2813.    @ 08,02 WINSAY "False or Exit to DOS When an Error is"
  2814.    @ 09,02 WINSAY "Encountered, Depending on the Parameters Sent."
  2815.  
  2816.    DO WHILE .T.
  2817.       SetMsgLin("▓ Open_Fil() Function Information ▓ ESC-Exit ▓")
  2818.  
  2819.       WaitKey(0)     // Wait for KeyStroke
  2820.  
  2821.       IF LASTKEY() == K_ESC
  2822.          EXIT
  2823.       ENDIF
  2824.  
  2825.       ** Add a command here to execute something after this **
  2826.       ** dialog box.                                        **
  2827.    ENDDO
  2828.  
  2829.    VarPop()
  2830.    WINDOW REMOVE
  2831.  
  2832. *******************************************************************************
  2833. ** CALLED BY: Selection << Rght_Jst() >> in Proc:  MENU015                   **
  2834. **   Comment: Rght_Jst() Sample                                              **
  2835. *******************************************************************************
  2836. PROCEDURE Dlog083()
  2837.    LOCAL x,GetList := {},mStuff
  2838.  
  2839.    VarPush("DLOG083")
  2840.  
  2841.    SETCOLOR(Var(WNDW_CLR_))
  2842.    @ 13,11,22,56 WINDOW STYLE "3+"
  2843.  
  2844.    SETCOLOR(Var(WMSG_CLR_))
  2845.    @ 01,02 WINSAY "The Rght_Jst() Function Will Right Justify"
  2846.    @ 02,02 WINSAY "Input Into a GET.  This Will Only Work on"
  2847.    @ 03,02 WINSAY "a Character Memory Variable."
  2848.    SETCOLOR(Var(WNDW_CLR_))
  2849.    @ 05,02 WINSAY "Enter Something to Right Justify:"
  2850.    @ 07,02 WINSAY "Right Justify:"
  2851.  
  2852.    mStuff := Space(10)
  2853.  
  2854.    DO WHILE .T.
  2855.       SetMsgLin("▓ Enter Something to Right Justify ▓ ESC-Exit ▓")
  2856.  
  2857.       @ 07,17 WINGET mStuff VALIDBLOCK ;
  2858.       {|| ;
  2859.           Rght_Jst("0")}
  2860.  
  2861.       ReadGets(@GetList)
  2862.  
  2863.       IF LASTKEY() == K_ESC
  2864.          EXIT
  2865.       ENDIF
  2866.  
  2867.       ** You may want to do some validations here **
  2868.       ** before executing the next proc.          **
  2869.       Hand084()
  2870.    ENDDO
  2871.  
  2872.    VarPop()
  2873.    WINDOW REMOVE
  2874.  
  2875. *******************************************************************************
  2876. ** CALLED BY: Selection << ChgDir() >> in Proc:  MENU014                     **
  2877. **   Comment: ChgDir() Sample                                                **
  2878. *******************************************************************************
  2879. PROCEDURE Dlog089()
  2880.    LOCAL x,GetList := {},cDrctry
  2881.  
  2882.    VarPush("DLOG089")
  2883.  
  2884.    SETCOLOR(Var(WNDW_CLR_))
  2885.    @ 11,02,22,51 WINDOW STYLE "3+"
  2886.  
  2887.    SETCOLOR(Var(WMSG_CLR_))
  2888.    @ 01,02 WINSAY "The ChgDir() Function Accepts One Parameter,"
  2889.    @ 02,02 WINSAY "a Character Value of a DOS Subdirectory Name."
  2890.    @ 03,02 WINSAY "ChgDir() Attempts to Change to That Directory."
  2891.    SETCOLOR(Var(WNDW_CLR_))
  2892.    @ 05,02 WINSAY "ChgDir() Returns a Numeric Value Indicating"
  2893.    @ 06,02 WINSAY "the DOS Return Code."
  2894.    @ 08,02 WINSAY "Directory Name:"
  2895.  
  2896.    cDrctry := Padr("\"+CurDir(),60)
  2897.  
  2898.    DO WHILE .T.
  2899.       SetMsgLin("▓ Enter New Directory Name ▓ ESC-Exit ▓")
  2900.  
  2901.       @ 09,02 WINGET cDrctry PICTURE "@S46@!"
  2902.  
  2903.       ReadGets(@GetList)
  2904.  
  2905.       IF LASTKEY() == K_ESC
  2906.          EXIT
  2907.       ENDIF
  2908.  
  2909.       ** You may want to do some validations here **
  2910.       ** before executing the next proc.          **
  2911.       Hand090(cDrctry)
  2912.    ENDDO
  2913.  
  2914.    VarPop()
  2915.    WINDOW REMOVE
  2916.  
  2917. *******************************************************************************
  2918. ** CALLED BY: Selection << ChgDsk() >> in Proc:  MENU014                     **
  2919. **   Comment: ChgDsk() Sample                                                **
  2920. *******************************************************************************
  2921. PROCEDURE Dlog091()
  2922.  
  2923.    VarPush("DLOG091")
  2924.  
  2925.    SETCOLOR(Var(WNDW_CLR_))
  2926.    @ 13,12,18,57 WINDOW STYLE "3+"
  2927.  
  2928.    SETCOLOR(Var(WMSG_CLR_))
  2929.    @ 01,02 WINSAY "The ChgDsk() Function Works Much Like the"
  2930.    @ 02,02 WINSAY "ChgDir() Function, Except that the Default"
  2931.    @ 03,02 WINSAY "DOS Disk is Changed.  Based on a One Byte"
  2932.    @ 04,02 WINSAY "Drive Letter Passed to the Function."
  2933.    SETCOLOR(Var(WNDW_CLR_))
  2934.  
  2935.    DO WHILE .T.
  2936.       SetMsgLin("▓ ChgDsk() Function Description ▓ ESC-Exit ▓")
  2937.  
  2938.       WaitKey(0)     // Wait for KeyStroke
  2939.  
  2940.       IF LASTKEY() == K_ESC
  2941.          EXIT
  2942.       ENDIF
  2943.  
  2944.       ** Add a command here to execute something after this **
  2945.       ** dialog box.                                        **
  2946.    ENDDO
  2947.  
  2948.    VarPop()
  2949.    WINDOW REMOVE
  2950.  
  2951. *******************************************************************************
  2952. ** CALLED BY: Selection << MakDir() >> in Proc:  MENU014                     **
  2953. **   Comment: MakDir() Sample                                                **
  2954. *******************************************************************************
  2955. PROCEDURE Dlog092()
  2956.    LOCAL x,GetList := {},cDrctry
  2957.  
  2958.    VarPush("DLOG092")
  2959.  
  2960.    SETCOLOR(Var(WNDW_CLR_))
  2961.    @ 14,13,22,57 WINDOW STYLE "3+"
  2962.  
  2963.    SETCOLOR(Var(WMSG_CLR_))
  2964.    @ 01,02 WINSAY "The MakDir() Function Attempts to Create"
  2965.    @ 02,02 WINSAY "a New DOS Subdirectory.  Pass a Character"
  2966.    @ 03,02 WINSAY "Value of the New Directory Name."
  2967.    SETCOLOR(Var(WNDW_CLR_))
  2968.    @ 05,02 WINSAY "Directory to Create?"
  2969.  
  2970.    cDrctry := Space(60)
  2971.  
  2972.    DO WHILE .T.
  2973.       SetMsgLin("▓ Enter New Directory Name ▓ ESC-Exit ▓")
  2974.  
  2975.       @ 06,02 WINGET cDrctry PICTURE "@S41@!"
  2976.  
  2977.       ReadGets(@GetList)
  2978.  
  2979.       IF LASTKEY() == K_ESC
  2980.          EXIT
  2981.       ENDIF
  2982.  
  2983.       ** You may want to do some validations here **
  2984.       ** before executing the next proc.          **
  2985.       Hand093(cDrctry)
  2986.    ENDDO
  2987.  
  2988.    VarPop()
  2989.    WINDOW REMOVE
  2990.  
  2991. *******************************************************************************
  2992. ** CALLED BY: Selection << InPath() >> in Proc:  MENU014                     **
  2993. **   Comment: InPath() Sample                                                **
  2994. *******************************************************************************
  2995. PROCEDURE Dlog094()
  2996.    LOCAL x,GetList := {},mFile
  2997.  
  2998.    VarPush("DLOG094")
  2999.  
  3000.    SETCOLOR(Var(WNDW_CLR_))
  3001.    @ 13,08,22,56 WINDOW STYLE "3+"
  3002.  
  3003.    SETCOLOR(Var(WMSG_CLR_))
  3004.    @ 01,02 WINSAY "The InPath() Function Will Check Your DOS"
  3005.    @ 02,02 WINSAY "PATH (Or Another) Environment Variable for"
  3006.    @ 03,02 WINSAY "The Existence of the Filename Passed."
  3007.    @ 04,02 WINSAY "InPath() Returns the Name of the Subdirectory"
  3008.    @ 05,02 WINSAY "Where the File is Located."
  3009.    SETCOLOR(Var(WNDW_CLR_))
  3010.    @ 07,02 WINSAY "Filename to Find:"
  3011.  
  3012.    mFile := Space(12)
  3013.  
  3014.    DO WHILE .T.
  3015.       SetMsgLin("▓ Enter a Filename ▓ ESC-Exit ▓")
  3016.  
  3017.       @ 07,20 WINGET mFile PICTURE "@!" VALIDBLOCK ;
  3018.       {|| ;
  3019.           Req("Enter a Filename", ;
  3020.               WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_)).and. ;
  3021.           Req("Enter a Filename", ;
  3022.               WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  3023.  
  3024.       ReadGets(@GetList)
  3025.  
  3026.       IF LASTKEY() == K_ESC
  3027.          EXIT
  3028.       ENDIF
  3029.  
  3030.       ** You may want to do some validations here **
  3031.       ** before executing the next proc.          **
  3032.       Hand095(mFile)
  3033.    ENDDO
  3034.  
  3035.    VarPop()
  3036.    WINDOW REMOVE
  3037.  
  3038. *******************************************************************************
  3039. ** CALLED BY: Selection << MaxHndls() >> in Proc:  MENU014                   **
  3040. **   Comment: MaxHndls() Sample                                              **
  3041. *******************************************************************************
  3042. PROCEDURE Dlog096()
  3043.  
  3044.    VarPush("DLOG096")
  3045.  
  3046.    SETCOLOR(Var(WNDW_CLR_))
  3047.    @ 15,11,22,56 WINDOW STYLE "3+"
  3048.  
  3049.    SETCOLOR(Var(WMSG_CLR_))
  3050.    @ 01,02 WINSAY "The MaxHndls() Function Counts the Number"
  3051.    @ 02,02 WINSAY "of Available DOS File Handles and Returns"
  3052.    @ 03,02 WINSAY "a Value Based on That Data."
  3053.    SETCOLOR(Var(WNDW_CLR_))
  3054.    @ 05,02 WINSAY "Your System Has a Maximum xxx File Handles"
  3055.    @ 06,02 WINSAY "Available to Use."
  3056.  
  3057.    SetMsgLin("▓ Press ESC to Remove Window ▓ ESC-Exit ▓")
  3058.  
  3059.    Hand097()
  3060.  
  3061.    VarPop()
  3062.    WINDOW REMOVE
  3063.  
  3064. *******************************************************************************
  3065. ** CALLED BY: Selection << fEof() >> in Proc:  MENU013                       **
  3066. **   Comment: fEof() Sample                                                  **
  3067. *******************************************************************************
  3068. PROCEDURE Dlog098()
  3069.  
  3070.    VarPush("DLOG098")
  3071.  
  3072.    SETCOLOR(Var(WNDW_CLR_))
  3073.    @ 13,12,21,57 WINDOW STYLE "3+"
  3074.  
  3075.    SETCOLOR(Var(WMSG_CLR_))
  3076.    @ 01,02 WINSAY "The fEof() Function is to CR/LF Delimited"
  3077.    @ 02,02 WINSAY "Text Files What the Clipper Eof() Function"
  3078.    @ 03,02 WINSAY "is to Databases."
  3079.    SETCOLOR(Var(WNDW_CLR_))
  3080.    @ 05,02 WINSAY 'A "DO WHILE !FEOF()/ENDDO" Loop (With an'
  3081.    @ 06,02 WINSAY "fGets() Inside) Will Read the Contents of"
  3082.    @ 07,02 WINSAY "a Text File."
  3083.  
  3084.    DO WHILE .T.
  3085.       SetMsgLin("▓ Press ESC to Remove Window ▓ ESC-Exit ▓")
  3086.  
  3087.       WaitKey(0)     // Wait for KeyStroke
  3088.  
  3089.       IF LASTKEY() == K_ESC
  3090.          EXIT
  3091.       ENDIF
  3092.  
  3093.       ** Add a command here to execute something after this **
  3094.       ** dialog box.                                        **
  3095.    ENDDO
  3096.  
  3097.    VarPop()
  3098.    WINDOW REMOVE
  3099.  
  3100. *******************************************************************************
  3101. ** CALLED BY: Selection << fGets() >> in Proc:  MENU013                      **
  3102. **   Comment: fGets() Sample                                                 **
  3103. *******************************************************************************
  3104. PROCEDURE Dlog099()
  3105.  
  3106.    VarPush("DLOG099")
  3107.  
  3108.    SETCOLOR(Var(WNDW_CLR_))
  3109.    @ 14,11,18,57 WINDOW STYLE "3+"
  3110.  
  3111.    SETCOLOR(Var(WMSG_CLR_))
  3112.    @ 01,02 WINSAY "The fGets() Function Simply Reads the Next"
  3113.    @ 02,02 WINSAY "Sequential Record of a CR/LF Delimited Text"
  3114.    @ 03,02 WINSAY "File."
  3115.    SETCOLOR(Var(WNDW_CLR_))
  3116.  
  3117.    DO WHILE .T.
  3118.       SetMsgLin("▓ Press ESC to Remove Window ▓ ESC-Exit ▓")
  3119.  
  3120.       WaitKey(0)     // Wait for KeyStroke
  3121.  
  3122.       IF LASTKEY() == K_ESC
  3123.          EXIT
  3124.       ENDIF
  3125.  
  3126.       ** Add a command here to execute something after this **
  3127.       ** dialog box.                                        **
  3128.    ENDDO
  3129.  
  3130.    VarPop()
  3131.    WINDOW REMOVE
  3132.  
  3133. *******************************************************************************
  3134. ** CALLED BY: Selection << fGetsR() >> in Proc:  MENU013                     **
  3135. **   Comment: fGetsR() Sample                                                **
  3136. *******************************************************************************
  3137. PROCEDURE Dlog100()
  3138.  
  3139.    VarPush("DLOG100")
  3140.  
  3141.    SETCOLOR(Var(WNDW_CLR_))
  3142.    @ 15,10,20,57 WINDOW STYLE "3+"
  3143.  
  3144.    SETCOLOR(Var(WMSG_CLR_))
  3145.    @ 01,02 WINSAY "The fGetsR() Function Works Like fGets()"
  3146.    @ 02,02 WINSAY "Except that it Reads the PREVIOUS Sequential"
  3147.    @ 03,02 WINSAY "Record in a CR/LF Delimted Text File.  The"
  3148.    @ 04,02 WINSAY '"R" Stands for "Reverse".'
  3149.    SETCOLOR(Var(WNDW_CLR_))
  3150.  
  3151.    DO WHILE .T.
  3152.       SetMsgLin("▓ Press ESC to Remove Window ▓ ESC-Exit ▓")
  3153.  
  3154.       WaitKey(0)     // Wait for KeyStroke
  3155.  
  3156.       IF LASTKEY() == K_ESC
  3157.          EXIT
  3158.       ENDIF
  3159.  
  3160.       ** Add a command here to execute something after this **
  3161.       ** dialog box.                                        **
  3162.    ENDDO
  3163.  
  3164.    VarPop()
  3165.    WINDOW REMOVE
  3166.  
  3167. *******************************************************************************
  3168. ** CALLED BY: Selection << TextView() >> in Proc:  MENU013                   **
  3169. **   Comment: TextView() Sample                                              **
  3170. *******************************************************************************
  3171. PROCEDURE Dlog101()
  3172.  
  3173.    VarPush("DLOG101")
  3174.  
  3175.    SETCOLOR(Var(WNDW_CLR_))
  3176.    @ 15,06,22,54 WINDOW STYLE "3+"
  3177.  
  3178.    SETCOLOR(Var(WMSG_CLR_))
  3179.    @ 01,02 WINSAY "The TextView() Function Displays the Contents"
  3180.    @ 02,02 WINSAY "of a CR/LF Delimited Text File Within a Set"
  3181.    @ 03,02 WINSAY "of Screen Coordinates."
  3182.    SETCOLOR(Var(WNDW_CLR_))
  3183.    @ 05,02 WINSAY 'All the "Description" Menu Selections in'
  3184.    @ 06,02 WINSAY "This Program are Examples of TextView()."
  3185.  
  3186.    DO WHILE .T.
  3187.       SetMsgLin("▓ Press ESC to Remove Window ▓ ESC-Exit ▓")
  3188.  
  3189.       WaitKey(0)     // Wait for KeyStroke
  3190.  
  3191.       IF LASTKEY() == K_ESC
  3192.          EXIT
  3193.       ENDIF
  3194.  
  3195.       ** Add a command here to execute something after this **
  3196.       ** dialog box.                                        **
  3197.    ENDDO
  3198.  
  3199.    VarPop()
  3200.    WINDOW REMOVE
  3201.  
  3202. *******************************************************************************
  3203. ** CALLED BY: Selection << Edt_Memo() >> in Proc:  MENU012                   **
  3204. **   Comment: Edt_Memo() Sample                                              **
  3205. *******************************************************************************
  3206. PROCEDURE Dlog106()
  3207.  
  3208.    VarPush("DLOG106")
  3209.  
  3210.    SETCOLOR(Var(WNDW_CLR_))
  3211.    @ 07,03,21,51 WINDOW STYLE "3+"
  3212.  
  3213.    SETCOLOR(Var(WMSG_CLR_))
  3214.    @ 01,02 WINSAY "Edt_Memo() is the Full-Feature Half of the"
  3215.    @ 02,02 WINSAY "Builder Memo Functions."
  3216.    SETCOLOR(Var(WNDW_CLR_))
  3217.    @ 04,02 WINSAY "Edt_Memo() Will Put a Border on the Screen,"
  3218.    @ 05,02 WINSAY "a Title on the Window, and  Save Changes"
  3219.    @ 06,02 WINSAY "to Disk if Ctrl+W is Pressed."
  3220.    @ 08,02 WINSAY "Optionally You Can Start Editing at the End"
  3221.    @ 09,02 WINSAY "of the Memo Text or Limit the Size."
  3222.    @ 11,02 WINSAY "You Can Pass a Character String That is"
  3223.    @ 12,02 WINSAY "Appended to the Memo in the Event Any Changes"
  3224.    @ 13,02 WINSAY "are Made."
  3225.  
  3226.    SetMsgLin("▓ Press Enter for Test Memo ▓ ESC-Exit ▓")
  3227.  
  3228.    Hand107()
  3229.  
  3230.    VarPop()
  3231.    WINDOW REMOVE
  3232.  
  3233. *******************************************************************************
  3234. ** CALLED BY: Selection << Show_Memo() >> in Proc:  MENU012                  **
  3235. **   Comment: Show_Memo() Sample                                             **
  3236. *******************************************************************************
  3237. PROCEDURE Dlog108()
  3238.  
  3239.    VarPush("DLOG108")
  3240.  
  3241.    SETCOLOR(Var(WNDW_CLR_))
  3242.    @ 10,00,22,54 WINDOW STYLE "3+"
  3243.  
  3244.    SETCOLOR(Var(WMSG_CLR_))
  3245.    @ 01,02 WINSAY "The Show_Memo() Function Performs Some Features"
  3246.    @ 02,02 WINSAY "Before it Calls the Clipper MEMOEDIT() Function"
  3247.    SETCOLOR(Var(WNDW_CLR_))
  3248.    @ 04,04 WINSAY "o You Can Limit the Number of Lines Keyed"
  3249.    @ 05,06 WINSAY "into the Memo (Preventing Out of Memory Errors)"
  3250.    @ 07,04 WINSAY "o You Can Optionally Start Editting at the"
  3251.    @ 08,06 WINSAY "End of the Memo Text."
  3252.  
  3253.    SETCOLOR(Var(WMSG_CLR_))
  3254.    @ 10,02 WINSAY "However, It Does NOT:  Put a Border or Title"
  3255.    @ 11,02 WINSAY "On the Screen.  And Doesn't Save Changes to Disk"
  3256.    SETCOLOR(Var(WNDW_CLR_))
  3257.  
  3258.    DO WHILE .T.
  3259.       SetMsgLin("▓ Press ESC to Continue ▓ ESC-Exit ▓")
  3260.  
  3261.       WaitKey(0)     // Wait for KeyStroke
  3262.  
  3263.       IF LASTKEY() == K_ESC
  3264.          EXIT
  3265.       ENDIF
  3266.  
  3267.       ** Add a command here to execute something after this **
  3268.       ** dialog box.                                        **
  3269.    ENDDO
  3270.  
  3271.    VarPop()
  3272.    WINDOW REMOVE
  3273.  
  3274. *******************************************************************************
  3275. ** CALLED BY: Selection << TtlKeyOn()/TtlKeyOff() >> in Proc:  MENU011       **
  3276. **   Comment: TotalKeyOn()/TotalKeyOff()                                     **
  3277. *******************************************************************************
  3278. PROCEDURE Dlog110()
  3279.  
  3280.    VarPush("DLOG110")
  3281.  
  3282.    SETCOLOR(Var(WNDW_CLR_))
  3283.    @ 12,06,22,55 WINDOW STYLE "3+"
  3284.  
  3285.    SETCOLOR(Var(WMSG_CLR_))
  3286.    @ 01,02 WINSAY "The TotalKeyOn() and TotalKeyOff() Functions"
  3287.    @ 02,02 WINSAY "Turn On and Off the Menu System's Ability to"
  3288.    @ 03,02 WINSAY "Jump Between Menus Dropped From the Root Menu."
  3289.    SETCOLOR(Var(WNDW_CLR_))
  3290.    @ 05,02 WINSAY "Try This by Pressing the Right and Left Arrow"
  3291.    @ 06,02 WINSAY 'Keys From the "Library Functions" Menu.'
  3292.    @ 08,02 WINSAY "Builder Automatically Inserts Calls to These"
  3293.    @ 09,02 WINSAY "Functions Where Required."
  3294.  
  3295.    DO WHILE .T.
  3296.       SetMsgLin("▓ Press ESC to Continue ▓ ESC-Exit ▓")
  3297.  
  3298.       WaitKey(0)     // Wait for KeyStroke
  3299.  
  3300.       IF LASTKEY() == K_ESC
  3301.          EXIT
  3302.       ENDIF
  3303.  
  3304.       ** Add a command here to execute something after this **
  3305.       ** dialog box.                                        **
  3306.    ENDDO
  3307.  
  3308.    VarPop()
  3309.    WINDOW REMOVE
  3310.  
  3311. *******************************************************************************
  3312. ** CALLED BY: Selection << TimeOut() >> in Proc:  MENU011                    **
  3313. **   Comment: TimeOut() Sample                                               **
  3314. *******************************************************************************
  3315. PROCEDURE Dlog111()
  3316.  
  3317.    VarPush("DLOG111")
  3318.  
  3319.    SETCOLOR(Var(WNDW_CLR_))
  3320.    @ 11,00,22,54 WINDOW STYLE "3+"
  3321.  
  3322.    SETCOLOR(Var(WMSG_CLR_))
  3323.    @ 01,02 WINSAY "The TimeOut() Function Tests (Huup <deep breath>)"
  3324.    @ 02,02 WINSAY "The Keyboard, Screen, Disk, Communications, and"
  3325.    @ 03,02 WINSAY "Printer System Interrupts for Activity."
  3326.    SETCOLOR(Var(WNDW_CLR_))
  3327.    @ 05,02 WINSAY "If There is NO ACTIVITY on ANY Interrupt for the"
  3328.    @ 06,02 WINSAY "Specified Time Period, a Keystroke is Stuffed into"
  3329.    @ 07,02 WINSAY "the Keyboard Buffer.  Subsequent Calls to TimeOut()"
  3330.    @ 08,02 WINSAY 'and the Function Will Return the Value of "Y".'
  3331.  
  3332.    SETCOLOR(Var(WMSG_CLR_))
  3333.    @ 10,02 WINSAY "Press ENTER for a TimeOut() Test"
  3334.    SETCOLOR(Var(WNDW_CLR_))
  3335.  
  3336.    SetMsgLin("▓ TimeOut() Function Sample ▓ ESC-Exit ▓")
  3337.  
  3338.    Hand112()
  3339.  
  3340.    VarPop()
  3341.    WINDOW REMOVE
  3342.  
  3343. *******************************************************************************
  3344. ** CALLED BY: Hand Code:  HAND112   TimeOut() Sample                         **
  3345. **   Comment: TimeOut() Sample                                               **
  3346. *******************************************************************************
  3347. PROCEDURE Dlog113()
  3348.    LOCAL x,GetList := {},mDummy
  3349.  
  3350.    VarPush("DLOG113")
  3351.  
  3352.    SETCOLOR(Var(WNDW_CLR_))
  3353.    @ 08,13,14,61 WINDOW STYLE "3+"
  3354.  
  3355.    SETCOLOR(Var(WMSG_CLR_))
  3356.    @ 01,02 WINSAY "If You Do Not Touch Your Keyboard for Five"
  3357.    @ 02,02 WINSAY "Consectutive Seconds, a TimeOut() Will Occur."
  3358.    SETCOLOR(Var(WNDW_CLR_))
  3359.  
  3360.    mDummy := Space(20)
  3361.  
  3362.    DO WHILE .T.
  3363.       SetMsgLin("▓ TimeOut() Function Sample ▓ ESC-Exit ▓")
  3364.  
  3365.       @ 04,02 WINGET mDummy
  3366.  
  3367.       ReadGets(@GetList)
  3368.  
  3369.       IF LASTKEY() == K_ESC
  3370.          EXIT
  3371.       ENDIF
  3372.  
  3373.       ** Add a command here to execute something after this **
  3374.       ** dialog box.                                        **
  3375.    ENDDO
  3376.  
  3377.    VarPop()
  3378.    WINDOW REMOVE
  3379.  
  3380. *******************************************************************************
  3381. ** CALLED BY: Selection << Hex2Dec() >> in Proc:  MENU010                    **
  3382. **   Comment: Hex2Dec() Sample                                               **
  3383. *******************************************************************************
  3384. PROCEDURE Dlog115()
  3385.    LOCAL x,GetList := {},mHexnbr
  3386.  
  3387.    VarPush("DLOG115")
  3388.  
  3389.    SETCOLOR(Var(WNDW_CLR_))
  3390.    @ 15,08,22,50 WINDOW STYLE "3+"
  3391.  
  3392.    SETCOLOR(Var(WMSG_CLR_))
  3393.    @ 01,02 WINSAY "What Function Library Would Be Complete"
  3394.    @ 02,02 WINSAY "Without a Hexidecimal to Decimal Number"
  3395.    @ 03,02 WINSAY "Conversion?"
  3396.    SETCOLOR(Var(WNDW_CLR_))
  3397.    @ 05,02 WINSAY "Enter Hex Number:"
  3398.  
  3399.    mHexnbr := Space(10)
  3400.  
  3401.    DO WHILE .T.
  3402.       SetMsgLin("▓ Enter a Hexidecimal Number to Convert ▓ ESC-Exit ▓")
  3403.  
  3404.       @ 05,20 WINGET mHexnbr PICTURE "@!"
  3405.  
  3406.       ReadGets(@GetList)
  3407.  
  3408.       IF LASTKEY() == K_ESC
  3409.          EXIT
  3410.       ENDIF
  3411.  
  3412.       ** You may want to do some validations here **
  3413.       ** before executing the next proc.          **
  3414.       Hand116(mHexNbr)
  3415.    ENDDO
  3416.  
  3417.    VarPop()
  3418.    WINDOW REMOVE
  3419.  
  3420. *******************************************************************************
  3421. ** CALLED BY: Selection << Dec2Hex() >> in Proc:  MENU010                    **
  3422. **   Comment: Dec2Hex() Sample                                               **
  3423. *******************************************************************************
  3424. PROCEDURE Dlog117()
  3425.    LOCAL x,GetList := {},mDecnbr
  3426.  
  3427.    VarPush("DLOG117")
  3428.  
  3429.    SETCOLOR(Var(WNDW_CLR_))
  3430.    @ 15,06,22,51 WINDOW STYLE "3+"
  3431.  
  3432.    SETCOLOR(Var(WMSG_CLR_))
  3433.    @ 01,02 WINSAY "Of Course, a Library with a Hexidecimal to"
  3434.    @ 02,02 WINSAY "Decimal Conversion Also Needs the Ability"
  3435.    @ 03,02 WINSAY "to Do the Reverse Conversion."
  3436.    SETCOLOR(Var(WNDW_CLR_))
  3437.    @ 05,02 WINSAY "Enter a Decimal Number:"
  3438.  
  3439.    mDecnbr := 0
  3440.  
  3441.    DO WHILE .T.
  3442.       SetMsgLin("▓ Enter a Number to Convert to Hexidecimal ▓ ESC-Exit ▓")
  3443.  
  3444.       @ 05,26 WINGET mDecnbr PICTURE "9999999999"
  3445.  
  3446.       ReadGets(@GetList)
  3447.  
  3448.       IF LASTKEY() == K_ESC
  3449.          EXIT
  3450.       ENDIF
  3451.  
  3452.       ** You may want to do some validations here **
  3453.       ** before executing the next proc.          **
  3454.       Hand118(mDecnbr)
  3455.    ENDDO
  3456.  
  3457.    VarPop()
  3458.    WINDOW REMOVE
  3459.  
  3460. *******************************************************************************
  3461. ** CALLED BY: Selection << ErrTone() >> in Proc:  MENU018                    **
  3462. **   Comment: ErrTone() Sample                                               **
  3463. *******************************************************************************
  3464. PROCEDURE Dlog121()
  3465.    LOCAL x,GetList := {},mTonenbr
  3466.  
  3467.    VarPush("DLOG121")
  3468.  
  3469.    SETCOLOR(Var(WNDW_CLR_))
  3470.    @ 13,01,22,45 WINDOW STYLE "3+"
  3471.  
  3472.    SETCOLOR(Var(WMSG_CLR_))
  3473.    @ 01,02 WINSAY "The ErrTone() Function Simply Sounds the"
  3474.    @ 02,02 WINSAY "Speaker of Your Computer.  It Makes Five"
  3475.    @ 03,02 WINSAY "Different Sounds.  Enter a Number Between"
  3476.    @ 04,02 WINSAY "0 and 4 Below to Hear Each Sound Made by"
  3477.    @ 05,02 WINSAY "ErrTone()."
  3478.    SETCOLOR(Var(WNDW_CLR_))
  3479.    @ 07,02 WINSAY "Error Tone to Sound:"
  3480.  
  3481.    mTonenbr := 0
  3482.  
  3483.    DO WHILE .T.
  3484.       SetMsgLin("▓ Enter a Number Between 0 and 4 ▓ ESC-Exit ▓")
  3485.  
  3486.       @ 07,23 WINGET mTonenbr PICTURE "9" VALIDBLOCK ;
  3487.       {|| ;
  3488.           GenVld(Between(GETACTIVE():varGet(),0,4), ;
  3489.                  "Enter a Number Between 0 and 4 Only", ;
  3490.                  WinBott()-1,WinLeft()+2,WinRight()-2,.F.,Var(WERR_CLR_))}
  3491.  
  3492.       ReadGets(@GetList)
  3493.  
  3494.       IF LASTKEY() == K_ESC
  3495.          EXIT
  3496.       ENDIF
  3497.  
  3498.       ** You may want to do some validations here **
  3499.       ** before executing the next proc.          **
  3500.       Hand124(mToneNbr)
  3501.    ENDDO
  3502.  
  3503.    VarPop()
  3504.    WINDOW REMOVE
  3505.  
  3506. *******************************************************************************
  3507. ** CALLED BY: Selection << WaitKey() >> in Proc:  MENU018                    **
  3508. **   Comment: WaitKey() Sample                                               **
  3509. *******************************************************************************
  3510. PROCEDURE Dlog122()
  3511.  
  3512.    VarPush("DLOG122")
  3513.  
  3514.    SETCOLOR(Var(WNDW_CLR_))
  3515.    @ 14,00,22,49 WINDOW STYLE "3+"
  3516.  
  3517.    SETCOLOR(Var(WMSG_CLR_))
  3518.    @ 01,02 WINSAY "The WaitKey() Function is a Replacement for"
  3519.    @ 02,02 WINSAY "the Clipper Inkey(0) Function.  The Builder"
  3520.    @ 03,02 WINSAY "WaitKey() Will Respond to Builder Mouse Inputs"
  3521.    @ 04,02 WINSAY "and Will React to SET KEY TO ... Also."
  3522.    SETCOLOR(Var(WNDW_CLR_))
  3523.    @ 06,02 WINSAY "All Builder Programs and Library Functions"
  3524.    @ 07,02 WINSAY "Use WaitKey() Where Appropriate."
  3525.  
  3526.    SetMsgLin("▓ Press Any Key to Continue ▓ ESC-Exit ▓")
  3527.  
  3528.    Hand123()
  3529.  
  3530.    VarPop()
  3531.    WINDOW REMOVE
  3532.  
  3533. *******************************************************************************
  3534. ** CALLED BY: Selection << Asc2Bin() >> in Proc:  MENU010                    **
  3535. **   Comment: Asc2Bin() Sample                                               **
  3536. *******************************************************************************
  3537. PROCEDURE Dlog125()
  3538.  
  3539.    VarPush("DLOG125")
  3540.  
  3541.    SETCOLOR(Var(WNDW_CLR_))
  3542.    @ 06,02,22,52 WINDOW STYLE "3+"
  3543.  
  3544.    SETCOLOR(Var(WMSG_CLR_))
  3545.    @ 01,02 WINSAY "The Asc2Bin() Function Allows You to Create"
  3546.    @ 02,02 WINSAY "Character Strings With Embedded Control"
  3547.    @ 03,02 WINSAY "Characters Easily."
  3548.    SETCOLOR(Var(WNDW_CLR_))
  3549.    @ 05,02 WINSAY "This is Especially Useful When Creating"
  3550.    @ 06,02 WINSAY "Printer Control Strings."
  3551.    @ 08,02 WINSAY "For Example:"
  3552.    @ 09,02 WINSAY 'The String "^[l1O" When Passed to Asc2Bin()'
  3553.    @ 10,02 WINSAY 'Would Create the HP-PCL Control Code Esc+"l1O",'
  3554.    @ 11,02 WINSAY 'or the Equivalent of Chr(27)+"l1O" in Clipper'
  3555.    @ 12,02 WINSAY "Code.  (Laser Printer Code for Landscape)"
  3556.  
  3557.    SETCOLOR(Var(WMSG_CLR_))
  3558.    @ 14,02 WINSAY "This Allows Storing Printer Control Strings"
  3559.    @ 15,02 WINSAY "in Databases That Users Can Update."
  3560.    SETCOLOR(Var(WNDW_CLR_))
  3561.  
  3562.    DO WHILE .T.
  3563.       SetMsgLin("▓ Asc2Bin() Function Example ▓ ESC-Exit ▓")
  3564.  
  3565.       WaitKey(0)     // Wait for KeyStroke
  3566.  
  3567.       IF LASTKEY() == K_ESC
  3568.          EXIT
  3569.       ENDIF
  3570.  
  3571.       ** Add a command here to execute something after this **
  3572.       ** dialog box.                                        **
  3573.    ENDDO
  3574.  
  3575.    VarPop()
  3576.    WINDOW REMOVE
  3577.  
  3578. *******************************************************************************
  3579. ** CALLED BY: Selection << AddMPad()/DelMPad() >> in Proc:  MENU019          **
  3580. **   Comment: AddMPad()/DelMPad() Sample                                     **
  3581. *******************************************************************************
  3582. PROCEDURE Dlog126()
  3583.  
  3584.    VarPush("DLOG126")
  3585.  
  3586.    SETCOLOR(Var(WNDW_CLR_))
  3587.    @ 06,03,22,50 WINDOW STYLE "3+"
  3588.  
  3589.    SETCOLOR(Var(WMSG_CLR_))
  3590.    @ 01,02 WINSAY "The AddMPad() and DelMPad() Functions Add"
  3591.    @ 02,02 WINSAY "and Delete Mouse Hot Spots.  You Will Only"
  3592.    @ 03,02 WINSAY "Need to Use These for Your Own Routines or"
  3593.    @ 04,02 WINSAY "Adding Mouse Awareness to Another 3rd Party"
  3594.    @ 05,02 WINSAY "Library Function.  All Builder GETs, Menus,"
  3595.    @ 06,02 WINSAY "and Picklists are Already Mouse Aware."
  3596.    SETCOLOR(Var(WNDW_CLR_))
  3597.    @ 08,02 WINSAY "If the AddMPad() Does Not Work, You May Need"
  3598.    @ 09,02 WINSAY "to Use the Builder SetMouse() Function.  See"
  3599.    @ 10,02 WINSAY "the Description for SetMouse() for More"
  3600.    @ 11,02 WINSAY "Information."
  3601.    @ 13,02 WINSAY "............................................"
  3602.    @ 14,02 WINSAY "........Click.Left.Mouse.Button.Here........"
  3603.    @ 15,02 WINSAY "............................................"
  3604.  
  3605.    SetMsgLin("▓ AddMPad()/DelMPad() Function Sample ▓ ESC-Exit ▓")
  3606.  
  3607.    Hand127()
  3608.  
  3609.    VarPop()
  3610.    WINDOW REMOVE
  3611.  
  3612. *******************************************************************************
  3613. ** CALLED BY: Selection << Lateral Scrolling >> in Proc:  MENU003            **
  3614. **   Comment: Lateral Scroll Picklist Sample                                 **
  3615. *******************************************************************************
  3616. PROCEDURE Dlog128()
  3617.  
  3618.    VarPush("DLOG128")
  3619.  
  3620.    SETCOLOR(Var(WNDW_CLR_))
  3621.    @ 07,25,19,71 WINDOW STYLE "3+"
  3622.  
  3623.    SETCOLOR(Var(WMSG_CLR_))
  3624.    @ 01,02 WINSAY "If a Picklist Window is Narrower than the"
  3625.    @ 02,02 WINSAY "Data Being Displayed, an Arrow is Displayed"
  3626.    @ 03,02 WINSAY "in Either the Lower Left or Right Corner of"
  3627.    @ 04,02 WINSAY "the Window.  This Indicates More Data is"
  3628.    @ 05,02 WINSAY "Available for Viewing Outside the Window"
  3629.    @ 06,02 WINSAY "Boundries."
  3630.    SETCOLOR(Var(WNDW_CLR_))
  3631.    @ 08,02 WINSAY "Press the Left/Right Arrows or TAB/Back TAB"
  3632.    @ 09,02 WINSAY "Keys to Scroll the Picklist Laterally.  You"
  3633.    @ 10,02 WINSAY "Can Also Press the Left Mouse Button on the"
  3634.    @ 11,02 WINSAY "Left or Right Picklist Border."
  3635.  
  3636.    SetMsgLin("▓ Press ENTER for Example ▓ ESC-Exit ▓")
  3637.  
  3638.    Hand129()
  3639.  
  3640.    VarPop()
  3641.    WINDOW REMOVE
  3642.  
  3643. *******************************************************************************
  3644. ** CALLED BY: Selection << Between() >> in Proc:  MENU018                    **
  3645. **   Comment: Between() Sample                                               **
  3646. *******************************************************************************
  3647. PROCEDURE Dlog131()
  3648.    LOCAL x,GetList := {},mNumber
  3649.  
  3650.    VarPush("DLOG131")
  3651.  
  3652.    SETCOLOR(Var(WNDW_CLR_))
  3653.    @ 12,01,22,46 WINDOW STYLE "3+"
  3654.  
  3655.    SETCOLOR(Var(WMSG_CLR_))
  3656.    @ 01,02 WINSAY "The Between() Function Simply Determines"
  3657.    @ 02,02 WINSAY "If a Value (any data type) is <= One Value"
  3658.    @ 03,02 WINSAY "and >= to Another Value."
  3659.    SETCOLOR(Var(WNDW_CLR_))
  3660.    @ 05,02 WINSAY "To Test This, Enter a Number Between 1 and"
  3661.    @ 06,02 WINSAY "100."
  3662.    @ 08,02 WINSAY "Enter a Number:"
  3663.  
  3664.    mNumber := 0
  3665.  
  3666.    DO WHILE .T.
  3667.       SetMsgLin("▓ Enter a Number Between 1 and 100 ▓ ESC-Exit ▓")
  3668.  
  3669.       @ 08,18 WINGET mNumber PICTURE "999999" VALIDBLOCK ;
  3670.       {|| ;
  3671.           GenVld(Between(GETACTIVE():varGet(),1,100), ;
  3672.                  "That Number is NOT Between 1 and 100", ;
  3673.                  WinBott()-1,WinLeft()+2,WinRight()-2,.T.,Var(WERR_CLR_))}
  3674.  
  3675.       ReadGets(@GetList)
  3676.  
  3677.       IF LASTKEY() == K_ESC
  3678.          EXIT
  3679.       ENDIF
  3680.  
  3681.       ** Add a command here to execute something after this **
  3682.       ** dialog box.                                        **
  3683.    ENDDO
  3684.  
  3685.    VarPop()
  3686.    WINDOW REMOVE
  3687.  
  3688. *******************************************************************************
  3689. ** CALLED BY: Selection << Numeric() >> in Proc:  MENU018                    **
  3690. **   Comment: Numeric() Sample                                               **
  3691. *******************************************************************************
  3692. PROCEDURE Dlog132()
  3693.    LOCAL x,GetList := {},mNumtst
  3694.  
  3695.    VarPush("DLOG132")
  3696.  
  3697.    SETCOLOR(Var(WNDW_CLR_))
  3698.    @ 12,00,22,45 WINDOW STYLE "3+"
  3699.  
  3700.    SETCOLOR(Var(WMSG_CLR_))
  3701.    @ 01,02 WINSAY "The Numeric() Function Tests a Character"
  3702.    @ 02,02 WINSAY "String to Determine if All the Characters"
  3703.    @ 03,02 WINSAY "are Numeric or Not."
  3704.    SETCOLOR(Var(WNDW_CLR_))
  3705.    @ 05,02 WINSAY "Enter Numeric or Non-Numeric or Mixed Data"
  3706.    @ 06,02 WINSAY "to Test:"
  3707.    @ 08,02 WINSAY "Numeric Data Test:"
  3708.  
  3709.    mNumtst := Space(10)
  3710.  
  3711.    DO WHILE .T.
  3712.       SetMsgLin("▓ Enter Numeric() Test String ▓ ESC-Exit ▓")
  3713.  
  3714.       @ 08,21 WINGET mNumtst VALIDBLOCK ;
  3715.       {|| ;
  3716.           GenVld(Numeric(GETACTIVE():varGet()), ;
  3717.                  "Data is NOT Numeric", ;
  3718.                  WinBott()-1,WinLeft()+2,WinRight()-2,.T.,Var(WERR_CLR_))}
  3719.  
  3720.       ReadGets(@GetList)
  3721.  
  3722.       IF LASTKEY() == K_ESC
  3723.          EXIT
  3724.       ENDIF
  3725.  
  3726.       ** Add a command here to execute something after this **
  3727.       ** dialog box.                                        **
  3728.    ENDDO
  3729.  
  3730.    VarPop()
  3731.    WINDOW REMOVE
  3732.  
  3733. *******************************************************************************
  3734. ** CALLED BY: Selection << DbState() >> in Proc:  MENU018                    **
  3735. **   Comment: DbState() Sample                                               **
  3736. *******************************************************************************
  3737. PROCEDURE Dlog135()
  3738.  
  3739.    VarPush("DLOG135")
  3740.  
  3741.    SETCOLOR(Var(WNDW_CLR_))
  3742.    @ 08,00,22,48 WINDOW STYLE "3+"
  3743.  
  3744.    SETCOLOR(Var(WMSG_CLR_))
  3745.    @ 01,02 WINSAY "The DbState() Function is Useful When You are"
  3746.    @ 02,02 WINSAY "Writing Your Own Routines.  It Saves All"
  3747.    @ 03,02 WINSAY "Aspects of a Database Select Area to a Memory"
  3748.    @ 04,02 WINSAY "Variable.  Passing a DbState() Created Memory"
  3749.    @ 05,02 WINSAY "Variable as a Parameter Will Restore The"
  3750.    @ 06,02 WINSAY "Database to It's Previous State."
  3751.    SETCOLOR(Var(WNDW_CLR_))
  3752.    @ 08,02 WINSAY "DbState() Saves The Select Area, Index Order"
  3753.    @ 09,02 WINSAY "Number, Filter Condition, All Relations, and"
  3754.    @ 10,02 WINSAY "the Database Record Number."
  3755.  
  3756.    SETCOLOR(Var(WMSG_CLR_))
  3757.    @ 12,02 WINSAY "DbState() is Most Helpful When Writing"
  3758.    @ 13,02 WINSAY "'Black Box' Functions."
  3759.    SETCOLOR(Var(WNDW_CLR_))
  3760.  
  3761.    DO WHILE .T.
  3762.       SetMsgLin("▓ DbState() Function Information ▓ ESC-Exit ▓")
  3763.  
  3764.       WaitKey(0)     // Wait for KeyStroke
  3765.  
  3766.       IF LASTKEY() == K_ESC
  3767.          EXIT
  3768.       ENDIF
  3769.  
  3770.       ** Add a command here to execute something after this **
  3771.       ** dialog box.                                        **
  3772.    ENDDO
  3773.  
  3774.    VarPop()
  3775.    WINDOW REMOVE
  3776.  
  3777. *******************************************************************************
  3778. ** CALLED BY: Selection << MouseInit() >> in Proc:  MENU019                  **
  3779. **   Comment: MouseInit() Sample                                             **
  3780. *******************************************************************************
  3781. PROCEDURE Dlog136()
  3782.  
  3783.    VarPush("DLOG136")
  3784.  
  3785.    SETCOLOR(Var(WNDW_CLR_))
  3786.    @ 09,03,22,50 WINDOW STYLE "3+"
  3787.  
  3788.    SETCOLOR(Var(WMSG_CLR_))
  3789.    @ 01,02 WINSAY "The MouseInit() Function Should Only Be Used"
  3790.    @ 02,02 WINSAY "Once per Program Execution.  It Initializes"
  3791.    @ 03,02 WINSAY "the Mouse Awareness for a Builder Application"
  3792.    SETCOLOR(Var(WNDW_CLR_))
  3793.    @ 05,02 WINSAY "Builder Will Put the MouseInit() Call in"
  3794.    @ 06,02 WINSAY "the Program for You."
  3795.  
  3796.    SETCOLOR(Var(WMSG_CLR_))
  3797.    @ 08,02 WINSAY "MouseInit() Initializes the Mouse Interrupt"
  3798.    @ 09,02 WINSAY "(Int 51h), Turns the Mouse Cursor On, Puts"
  3799.    @ 10,02 WINSAY "the Mouse Cursor in the Lower Right Screen"
  3800.    @ 11,02 WINSAY "Corner, and Initializes the Array Used by"
  3801.    @ 12,02 WINSAY "AddMPad()/DelMPad()"
  3802.    SETCOLOR(Var(WNDW_CLR_))
  3803.  
  3804.    DO WHILE .T.
  3805.       SetMsgLin("▓ MouseInit() Function Information ▓ ESC-Exit ▓")
  3806.  
  3807.       WaitKey(0)     // Wait for KeyStroke
  3808.  
  3809.       IF LASTKEY() == K_ESC
  3810.          EXIT
  3811.       ENDIF
  3812.  
  3813.       ** Add a command here to execute something after this **
  3814.       ** dialog box.                                        **
  3815.    ENDDO
  3816.  
  3817.    VarPop()
  3818.    WINDOW REMOVE
  3819.  
  3820. *******************************************************************************
  3821. ** CALLED BY: Selection << SetMouse() >> in Proc:  MENU019                   **
  3822. **   Comment: SetMouse() Sample                                              **
  3823. *******************************************************************************
  3824. PROCEDURE Dlog137()
  3825.  
  3826.    VarPush("DLOG137")
  3827.  
  3828.    SETCOLOR(Var(WNDW_CLR_))
  3829.    @ 07,04,22,50 WINDOW STYLE "3+"
  3830.  
  3831.    SETCOLOR(Var(WMSG_CLR_))
  3832.    @ 01,02 WINSAY "The SetMouse() Function Has Three Purposes"
  3833.    @ 02,04 WINSAY "1) To Get the Mouse Button Status."
  3834.    @ 03,04 WINSAY "2) To Set the Mouse Button Status."
  3835.    @ 04,04 WINSAY "3) To Redirect Mouse Button Activity to"
  3836.    @ 05,07 WINSAY "Keyboard Activity."
  3837.    SETCOLOR(Var(WNDW_CLR_))
  3838.    @ 07,02 WINSAY "Number Three Should Only be Used With Non-"
  3839.    @ 08,02 WINSAY "Builder Routines.  For Example; DbEdit(),"
  3840.    @ 09,02 WINSAY "MemoEdit(), or a Routine from Another"
  3841.    @ 10,02 WINSAY "Library."
  3842.  
  3843.    SETCOLOR(Var(WMSG_CLR_))
  3844.    @ 12,02 WINSAY "Note That the Builder Edt_Memo() Function"
  3845.    @ 13,02 WINSAY "Sets Up Mouse Awareness Before Calling"
  3846.    @ 14,02 WINSAY "MemoEdit()."
  3847.    SETCOLOR(Var(WNDW_CLR_))
  3848.  
  3849.    DO WHILE .T.
  3850.       SetMsgLin("▓ SetMouse() Function Information ▓ ESC-Exit ▓")
  3851.  
  3852.       WaitKey(0)     // Wait for KeyStroke
  3853.  
  3854.       IF LASTKEY() == K_ESC
  3855.          EXIT
  3856.       ENDIF
  3857.  
  3858.       ** Add a command here to execute something after this **
  3859.       ** dialog box.                                        **
  3860.    ENDDO
  3861.  
  3862.    VarPop()
  3863.    WINDOW REMOVE
  3864.  
  3865. *******************************************************************************
  3866. ** CALLED BY: Dialog Window:  DLOG141   GetEdit() Sample                     **
  3867. **   Comment: AbGetEdit() Sample                                             **
  3868. *******************************************************************************
  3869. PROCEDURE Dlog140()
  3870.    LOCAL x,GetList := {}
  3871.  
  3872.    VarPush("DLOG140")
  3873.  
  3874.    SETCOLOR(Var(WNDW_CLR_))
  3875.    @ 07,09,16,64 WINDOW STYLE "3+"
  3876.  
  3877.    SETCOLOR(Var(WMSG_CLR_))
  3878.    @ 01,02 WINSAY "PRINTER CODES:"
  3879.    SETCOLOR(Var(WNDW_CLR_))
  3880.    @ 03,02 WINSAY "132 Columns"
  3881.    @ 05,02 WINSAY "273 Columns"
  3882.    @ 07,08 WINSAY "Reset"
  3883.  
  3884.    DO WHILE .T.
  3885.       SetMsgLin("▓ Enter Printer Codes ▓ ESC-Exit ▓")
  3886.  
  3887.       @ 03,14 WINGET qCmprs
  3888.       @ 05,14 WINGET qLndcmp
  3889.       @ 07,14 WINGET qReset
  3890.  
  3891.       GetEdit("OPTIONS",WinBott()-1,WinLeft()+2,GetList)
  3892.       EXIT
  3893.    ENDDO
  3894.  
  3895.    VarPop()
  3896.    WINDOW REMOVE
  3897.  
  3898. *******************************************************************************
  3899. ** CALLED BY: Selection << GetEdit() >> in Proc:  MENU017                    **
  3900. **   Comment: GetEdit() Sample                                               **
  3901. *******************************************************************************
  3902. PROCEDURE Dlog141()
  3903.  
  3904.    VarPush("DLOG141")
  3905.  
  3906.    SETCOLOR(Var(WNDW_CLR_))
  3907.    @ 13,04,22,47 WINDOW STYLE "3+"
  3908.  
  3909.    SETCOLOR(Var(WMSG_CLR_))
  3910.    @ 01,02 WINSAY "The GetEdit() function allows you to"
  3911.    @ 02,02 WINSAY "save fields edited in a dialog box to a"
  3912.    @ 03,02 WINSAY "database record--using ONE line of code!"
  3913.    @ 05,02 WINSAY "This is most useful when programming a"
  3914.    @ 06,02 WINSAY "window to edit your system's defaults."
  3915.    SETCOLOR(Var(WNDW_CLR_))
  3916.    @ 08,02 WINSAY "Press any key to see a sample."
  3917.  
  3918.    DO WHILE .T.
  3919.       SetMsgLin("▓ Press Any key for Sample Window ▓ ESC-Exit ▓")
  3920.  
  3921.       WaitKey(0)     // Wait for KeyStroke
  3922.  
  3923.       IF LASTKEY() == K_ESC
  3924.          EXIT
  3925.       ENDIF
  3926.  
  3927.       ** You may want to do some validations here **
  3928.       ** before executing the next proc.          **
  3929.       Dlog140()
  3930.    ENDDO
  3931.  
  3932.    VarPop()
  3933.    WINDOW REMOVE
  3934.  
  3935. *********************** ENDDLOG End of Dialog Box Procs ***********************
  3936.  
  3937. *******************************************************************************
  3938. ** >>>>>>>>>>>>>>>>>>>>>>> Related Maintenance Windows <<<<<<<<<<<<<<<<<<<<< **
  3939. *******************************************************************************
  3940.  
  3941. *******************************************************************************
  3942. ** CALLED BY: Pick List Window:  PLST061   Rel_Maint() Sample                **
  3943. **   Comment: Rel_Maint() Sample (Maint)                                     **
  3944. *******************************************************************************
  3945. PROCEDURE Rmnt062()
  3946.    LOCAL xBounds
  3947.    PRIVATE cRelKey1
  3948.    VarPush("RMNT062")
  3949.  
  3950.    SETCOLOR(Var(WNDW_CLR_))
  3951.    @ 05,00,12,29 WINDOW STYLE "3+"
  3952.  
  3953.    @ 02,02 WINSAY "First"
  3954.    @ 03,03 WINSAY "Last"
  3955.    @ 05,02 WINSAY "Phone"
  3956.  
  3957.    DBSELECTAREA("Friends")
  3958.    Friends->(DBSETORDER(1))
  3959.  
  3960.    // Set Relation Key Fields
  3961.    cRelKey1 := Cities->City
  3962.  
  3963.    Friends->(DBSEEK(Cities->City,.F.))
  3964.  
  3965.    xBounds := Cities->City
  3966.    Rel_Maint(WinTop(),WinLeft(),WinBott(),WinRight(),"062",{||xBounds==Friends->City}, ;
  3967.       "FRIENDS",aFriends,2,"ACD")
  3968.  
  3969.    VarPop()
  3970.    WINDOW REMOVE
  3971.  
  3972. FUNCTION Get062(cG_Func)
  3973.    LOCAL x,GetList := {}
  3974.  
  3975.    // Set Relation Key Fields
  3976.    BCITY := cRelKey1
  3977.  
  3978.    @ 02,08 WINGET BFNAME PICTURE "!xxxxxxxxxxxxx" VALIDBLOCK ;
  3979.       {|| ;
  3980.           Req("First Name Required", ;
  3981.               WinBott()-1,WinLeft()+2,WinRight()-2,Var(WERR_CLR_))}
  3982.    @ 03,08 WINGET BLNAME PICTURE "!xxxxxxxxxxxxxxxxxxx"
  3983.    @ 05,08 WINGET BPHONE PICTURE "@R (999) 999-9999"
  3984.  
  3985.    IF cG_Func$"AC"
  3986.       ReadGets(@GetList)
  3987.    ENDIF
  3988.    RETURN(NIL)
  3989.  
  3990. ********************* ENDRMNT End of Related Maintenances *********************
  3991.  
  3992. *******************************************************************************
  3993. ** >>>>>>>>>>>>>>>>>>>>>>>>>>>>> TBrowse Calls <<<<<<<<<<<<<<<<<<<<<<<<<<<<< **
  3994. *******************************************************************************
  3995.  
  3996. *******************************************************************************
  3997. ** CALLED BY: Hand Code:  HAND149   Position TBrowse Database                **
  3998. **   Comment: TBrowse Demo                                                   **
  3999. *******************************************************************************
  4000. FUNCTION Brws146()
  4001.    LOCAL nBr1,nBc1,nBr2,nBc2
  4002.    LOCAL x,nDisplayRow
  4003.    LOCAL oBrwObj,oColObj
  4004.    LOCAL aBrwCtrls := {},aColCtrls := {}
  4005.    LOCAL cOldColor := SETCOLOR(Var(BRWS_CLR_))
  4006.    LOCAL cDbStatus
  4007.    LOCAL aBrwObj
  4008.  
  4009.    VarPush("BRWS146")
  4010.  
  4011.    nBr1 := 04
  4012.    nBc1 := 12
  4013.    nBr2 := nBr1+10
  4014.    nBc2 := nBc1+55
  4015.  
  4016.  
  4017.    // Add Browse Controls to a Control Dictionary
  4018.    // Builder TBrowse internal controls
  4019.    DictPut(aBrwCtrls,"WINCOORD",{nBr1,nBc1,nBr2,nBc2})  // Win Corrdinates
  4020.    DictPut(aBrwCtrls,"ALIAS","Cities")    // TB Alias
  4021.    DictPut(aBrwCtrls,"ORDER",2)       // TB Index Order
  4022.    DictPut(aBrwCtrls,"DELINDX",4)      // Delete Index
  4023.    DictPut(aBrwCtrls,"BOUNDS",NIL)      // Bounded by Block
  4024.    DictPut(aBrwCtrls,"BNDKEYS",NIL)     // Bounded by Key Init
  4025.  
  4026.    // Builder TBrowse options controls
  4027.    DictPut(aBrwCtrls,"HGLTBAR",NIL)     // Highlight Bar Color Pair
  4028.    DictPut(aBrwCtrls,"FREEZE",.T.)      // Freeze Control
  4029.    DictPut(aBrwCtrls,"DELETE",.T.)      // Delete/Recover Control
  4030.    DictPut(aBrwCtrls,"AWIDTH",.T.)      // Adjust Column Width Control
  4031.    DictPut(aBrwCtrls,"CHGORD",.F.)      // Change Index Order Control
  4032.    DictPut(aBrwCtrls,"IDXSRC",.T.)      // Index Search Control
  4033.    DictPut(aBrwCtrls,"APPEND",.F.)      // Append Records Control
  4034.    DictPut(aBrwCtrls,"RECNBR",.T.)      // Record Number Visible @Start
  4035.    DictPut(aBrwCtrls,"RECTGL",.T.)      // Record Number Column Toggle Control
  4036.    DictPut(aBrwCtrls,"DELREC",.T.)      // Delete Database Record Control
  4037.  
  4038.    // Change the NIL here to the Seek prefix to use
  4039.    // if neeeded with Bounded by TBrowses.
  4040.    DictPut(aBrwCtrls,"BNDPFX",NIL)      // Bounded by Prefix
  4041.  
  4042.    // Change the {} here to a list of index orders
  4043.    // to remove from the Change Index Order list.
  4044.    DictPut(aBrwCtrls,"ORDEXCPT",{})     // Idx Orders to X From List
  4045.  
  4046.    // Change the NIL here to a codeblock that will
  4047.    // be evaluated for every TBrowse keystroke.
  4048.    DictPut(aBrwCtrls,"KYHNDLR",NIL)      // User Key Handler
  4049.  
  4050.    // Initialize the TBrowse Object
  4051.    oBrwObj := TBrowseDb(nBr1+1,nBc1+1,nBr2-2,nBc2-1)
  4052.    oBrwObj:cargo := aBrwCtrls
  4053.    oBrwObj:goBottomBlock := {||Cities->(AbGoBottom(oBrwObj))}
  4054.    oBrwObj:goTopBlock := {||Cities->(AbGoTop(oBrwObj))}
  4055.    oBrwObj:skipBlock := {|x|Cities->(AbTBSkip(x,oBrwObj))}
  4056.    oBrwObj:colorSpec := Var(BRWS_CLR_)+","+Var(BRWS_HL1_)+","+Var(BRWS_HL2_)
  4057.    oBrwObj:headSep := "═╤═"
  4058.    oBrwObj:colSep  := " │ "
  4059.    oBrwObj:footSep := "═╧═"
  4060.  
  4061.    // Add Column Objects to the TBrowse Object
  4062.    aColCtrls := {}
  4063.    DictPut(aColCtrls,"EDITABLE",.F.)
  4064.    DictPut(aColCtrls,"PICTURE",NIL)
  4065.    DictPut(aColCtrls,"COLNBR",1)
  4066.    DictPut(aColCtrls,"VALID",)
  4067.    DictPut(aColCtrls,"EXECBLK",NIL)
  4068.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("CITY"))
  4069.    oColObj := TBColumnNew("City", ;
  4070.       {||Cities->City})
  4071.    oColObj:cargo := aColCtrls
  4072.    oBrwObj:addColumn(oColObj)
  4073.  
  4074.    aColCtrls := {}
  4075.    DictPut(aColCtrls,"EDITABLE",.T.)
  4076.    DictPut(aColCtrls,"PICTURE","!!")
  4077.    DictPut(aColCtrls,"COLNBR",2)
  4078.    DictPut(aColCtrls,"VALID", ;
  4079.       {|| ;
  4080.           GenVld(In_Usa( Cities->State ), ;
  4081.                  "Not a Valid U.S. State Code", ;
  4082.                  nBr2-1,nBc1+2,nBc2-2,.F.,Var(BRWS_CLR_))})
  4083.    DictPut(aColCtrls,"EXECBLK",NIL)
  4084.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("STATE"))
  4085.    oColObj := TBColumnNew("State", ;
  4086.       {||TRANSFORM(Cities->State,"!!")})
  4087.    oColObj:cargo := aColCtrls
  4088.    oBrwObj:addColumn(oColObj)
  4089.  
  4090.    aColCtrls := {}
  4091.    DictPut(aColCtrls,"EDITABLE",.T.)
  4092.    DictPut(aColCtrls,"PICTURE",NIL)
  4093.    DictPut(aColCtrls,"COLNBR",3)
  4094.    DictPut(aColCtrls,"VALID",)
  4095.    DictPut(aColCtrls,"EXECBLK",NIL)
  4096.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("ZIP"))
  4097.    oColObj := TBColumnNew("Zip Code", ;
  4098.       {||Cities->Zip})
  4099.    oColObj:cargo := aColCtrls
  4100.    oColObj:defColor := { 3, 4 }
  4101.    oColObj:colorBlock := {|x|IF(!"0" $ x,{ 5, 6 }, {} ) }
  4102.    oBrwObj:addColumn(oColObj)
  4103.  
  4104.    aColCtrls := {}
  4105.    DictPut(aColCtrls,"EDITABLE",.T.)
  4106.    DictPut(aColCtrls,"PICTURE",NIL)
  4107.    DictPut(aColCtrls,"COLNBR",4)
  4108.    DictPut(aColCtrls,"VALID",)
  4109.    DictPut(aColCtrls,"EXECBLK", ;
  4110.       {|x|IF(x==NIL,Cities->Text,Cities->Text:=x)})
  4111.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("TEXT"))
  4112.    oColObj := TBColumnNew("Text", ;
  4113.       {||"<Memo>"})
  4114.    oColObj:cargo := aColCtrls
  4115.    oBrwObj:addColumn(oColObj)
  4116.  
  4117.    aColCtrls := {}
  4118.    DictPut(aColCtrls,"EDITABLE",.T.)
  4119.    DictPut(aColCtrls,"PICTURE",NIL)
  4120.    DictPut(aColCtrls,"COLNBR",5)
  4121.    DictPut(aColCtrls,"VALID",)
  4122.    DictPut(aColCtrls,"EXECBLK", ;
  4123.       {||MsgBox( { "Execute Any Function","With This Technique!" } )})
  4124.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("< SEE ME >"))
  4125.    oColObj := TBColumnNew("Execute Function", ;
  4126.       {||"<< See Me >>"})
  4127.    oColObj:cargo := aColCtrls
  4128.    oBrwObj:addColumn(oColObj)
  4129.  
  4130.    aColCtrls := {}
  4131.    DictPut(aColCtrls,"EDITABLE",.T.)
  4132.    DictPut(aColCtrls,"PICTURE",NIL)
  4133.    DictPut(aColCtrls,"COLNBR",6)
  4134.    DictPut(aColCtrls,"VALID",)
  4135.    DictPut(aColCtrls,"EXECBLK",NIL)
  4136.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("BOOLEAN"))
  4137.    oColObj := TBColumnNew("Logical", ;
  4138.       {||IF(Cities->Boolean,"<True> ","<False>")})
  4139.    oColObj:cargo := aColCtrls
  4140.    oBrwObj:addColumn(oColObj)
  4141.  
  4142.    // Free up some memory
  4143.    oColObj   := NIL
  4144.    aBrwCtrls := NIL
  4145.    aColCtrls := NIL
  4146.  
  4147.    // Put a Window on the Screen
  4148.    @ nBr1,nBc1,nBr2,nBc2 WINDOW STYLE "3+"
  4149.  
  4150.    // Add Some Other Display Items
  4151.    nDisplayRow := oBrwObj:nBottom - oBrwObj:rowCount - 1
  4152.  
  4153.    aBrwObj := { oBrwObj, Brws152() }
  4154.  
  4155.    // Execute the Browse
  4156.    DO WHILE .T.
  4157.       SetMsgLin("▓ Arrows/PgUp/PgDn-Move ▓ ENTER-Edit ▓ Alt+M-Menu ▓ Ctrl+ENTER-Next ▓ ESC-Exit ▓")
  4158.       IF !BrowseDb(aBrwObj)
  4159.          EXIT
  4160.       ENDIF
  4161.       cDbStatus := DbState()
  4162.       DbState( cDbStatus )
  4163.    ENDDO
  4164.  
  4165.    SETCOLOR(cOldColor)
  4166.    WINDOW REMOVE   // Remove Window from Screen
  4167.    WINDOW REMOVE   // Remove Window from Screen
  4168.    VarPop()
  4169.  
  4170.    RETURN(oBrwObj)
  4171.  
  4172. *******************************************************************************
  4173. ** CALLED BY: Table Browse: BRWS146   TBrowse Demo                           **
  4174. **   Comment: Related TBrowse Test                                           **
  4175. *******************************************************************************
  4176. FUNCTION Brws152()
  4177.    LOCAL nBr1,nBc1,nBr2,nBc2
  4178.    LOCAL x,nDisplayRow
  4179.    LOCAL oBrwObj,oColObj
  4180.    LOCAL aBrwCtrls := {},aColCtrls := {}
  4181.    LOCAL cOldColor := SETCOLOR(Var(BRWS_CLR_))
  4182.    LOCAL cDbStatus
  4183.    LOCAL aBrwObj
  4184.  
  4185.    //Array to initialize new bounded by records
  4186.    LOCAL aBndKeyBlks := { ;
  4187.          {||Friends->City:=Cities->City} ;
  4188.       }
  4189.  
  4190.    VarPush("BRWS152")
  4191.  
  4192.    nBr1 := 15
  4193.    nBc1 := 24
  4194.    nBr2 := nBr1+07
  4195.    nBc2 := nBc1+43
  4196.  
  4197.  
  4198.    // Add Browse Controls to a Control Dictionary
  4199.    // Builder TBrowse internal controls
  4200.    DictPut(aBrwCtrls,"WINCOORD",{nBr1,nBc1,nBr2,nBc2})  // Win Corrdinates
  4201.    DictPut(aBrwCtrls,"ALIAS","Friends")    // TB Alias
  4202.    DictPut(aBrwCtrls,"ORDER",1)       // TB Index Order
  4203.    DictPut(aBrwCtrls,"DELINDX",2)      // Delete Index
  4204.    DictPut(aBrwCtrls,"BOUNDS", ;
  4205.       {|x|IF(x==NIL,Friends->City==Cities->City,Cities->City)})     // Bounded by Field
  4206.    DictPut(aBrwCtrls,"BNDKEYS",aBndKeyBlks)     // Bounded by Key Init
  4207.  
  4208.    // Builder TBrowse options controls
  4209.    DictPut(aBrwCtrls,"HGLTBAR",NIL)     // Highlight Bar Color Pair
  4210.    DictPut(aBrwCtrls,"FREEZE",.T.)      // Freeze Control
  4211.    DictPut(aBrwCtrls,"DELETE",.T.)      // Delete/Recover Control
  4212.    DictPut(aBrwCtrls,"AWIDTH",.T.)      // Adjust Column Width Control
  4213.    DictPut(aBrwCtrls,"CHGORD",.F.)      // Change Index Order Control
  4214.    DictPut(aBrwCtrls,"IDXSRC",.F.)      // Index Search Control
  4215.    DictPut(aBrwCtrls,"APPEND",.T.)      // Append Records Control
  4216.    DictPut(aBrwCtrls,"RECNBR",.F.)      // Record Number Visible @Start
  4217.    DictPut(aBrwCtrls,"RECTGL",.T.)      // Record Number Column Toggle Control
  4218.    DictPut(aBrwCtrls,"DELREC",.T.)      // Delete Database Record Control
  4219.  
  4220.    // Change the NIL here to the Seek prefix to use
  4221.    // if neeeded with Bounded by TBrowses.
  4222.    DictPut(aBrwCtrls,"BNDPFX",NIL)      // Bounded by Prefix
  4223.  
  4224.    // Change the {} here to a list of index orders
  4225.    // to remove from the Change Index Order list.
  4226.    DictPut(aBrwCtrls,"ORDEXCPT",{})     // Idx Orders to X From List
  4227.  
  4228.    // Change the NIL here to a codeblock that will
  4229.    // be evaluated for every TBrowse keystroke.
  4230.    DictPut(aBrwCtrls,"KYHNDLR",NIL)      // User Key Handler
  4231.  
  4232.    // Initialize the TBrowse Object
  4233.    oBrwObj := TBrowseDb(nBr1+1,nBc1+1,nBr2-2,nBc2-1)
  4234.    oBrwObj:cargo := aBrwCtrls
  4235.    oBrwObj:goBottomBlock := {||Friends->(AbGoBottom(oBrwObj))}
  4236.    oBrwObj:goTopBlock := {||Friends->(AbGoTop(oBrwObj))}
  4237.    oBrwObj:skipBlock := {|x|Friends->(AbTBSkip(x,oBrwObj))}
  4238.    oBrwObj:colorSpec := Var(BRWS_CLR_)+","+Var(BRWS_HL1_)+","+Var(BRWS_HL2_)
  4239.    oBrwObj:headSep := "═╤═"
  4240.    oBrwObj:colSep  := " │ "
  4241.    oBrwObj:footSep := "═╧═"
  4242.  
  4243.    // Add Column Objects to the TBrowse Object
  4244.    aColCtrls := {}
  4245.    DictPut(aColCtrls,"EDITABLE",.T.)
  4246.    DictPut(aColCtrls,"PICTURE","!xxxxxxxxxxxxxx")
  4247.    DictPut(aColCtrls,"COLNBR",1)
  4248.    DictPut(aColCtrls,"VALID",)
  4249.    DictPut(aColCtrls,"EXECBLK",NIL)
  4250.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("FNAME"))
  4251.    oColObj := TBColumnNew("First", ;
  4252.       {||TRANSFORM(Friends->Fname,"!xxxxxxxxxxxxxx")})
  4253.    oColObj:cargo := aColCtrls
  4254.    oBrwObj:addColumn(oColObj)
  4255.  
  4256.    aColCtrls := {}
  4257.    DictPut(aColCtrls,"EDITABLE",.T.)
  4258.    DictPut(aColCtrls,"PICTURE","!xxxxxxxxxxxxxxxxxxx")
  4259.    DictPut(aColCtrls,"COLNBR",2)
  4260.    DictPut(aColCtrls,"VALID",)
  4261.    DictPut(aColCtrls,"EXECBLK",NIL)
  4262.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("LNAME"))
  4263.    oColObj := TBColumnNew("Last", ;
  4264.       {||TRANSFORM(Friends->Lname,"!xxxxxxxxxxxxxxxxxxx")})
  4265.    oColObj:cargo := aColCtrls
  4266.    oBrwObj:addColumn(oColObj)
  4267.  
  4268.    aColCtrls := {}
  4269.    DictPut(aColCtrls,"EDITABLE",.T.)
  4270.    DictPut(aColCtrls,"PICTURE","@R (999) 999-9999")
  4271.    DictPut(aColCtrls,"COLNBR",3)
  4272.    DictPut(aColCtrls,"VALID",)
  4273.    DictPut(aColCtrls,"EXECBLK",NIL)
  4274.    DictPut(aColCtrls,"GETBLK",FIELDBLOCK("PHONE"))
  4275.    oColObj := TBColumnNew("Phone", ;
  4276.       {||TRANSFORM(Friends->Phone,"@R (999) 999-9999")})
  4277.    oColObj:cargo := aColCtrls
  4278.    oBrwObj:addColumn(oColObj)
  4279.  
  4280.    // Free up some memory
  4281.    oColObj   := NIL
  4282.    aBrwCtrls := NIL
  4283.    aColCtrls := NIL
  4284.  
  4285.    // Put a Window on the Screen
  4286.    @ nBr1,nBc1,nBr2,nBc2 WINDOW STYLE "3+"
  4287.  
  4288.    // Add Some Other Display Items
  4289.    nDisplayRow := oBrwObj:nBottom - oBrwObj:rowCount - 1
  4290.  
  4291.    aBrwObj := { oBrwObj }
  4292.  
  4293.    // Execute the Browse
  4294.  
  4295.    SETCOLOR(cOldColor)
  4296.    VarPop()
  4297.  
  4298.    RETURN(oBrwObj)
  4299.  
  4300. ************************ ENDBRWS End of Tbrowse Windows************************
  4301.  
  4302. *******************************************************************************
  4303. ** >>>>>>>>>>>>>>>>>>>>>>>>>>>> Pick List Boxes <<<<<<<<<<<<<<<<<<<<<<<<<<<< **
  4304. *******************************************************************************
  4305.  
  4306. *******************************************************************************
  4307. ** CALLED BY: Hand Code:  HAND102   Picklist No Options Setup                **
  4308. **   Comment: No Options Picklist                                            **
  4309. *******************************************************************************
  4310. PROCEDURE Plst027()
  4311.    LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
  4312.  
  4313.    nPr1 := 11
  4314.    nPc1 := 22
  4315.    nPr2 := nPr1+09
  4316.    nPc2 := nPc1+44
  4317.  
  4318.    VarPush("PLST027")
  4319.  
  4320.    SETCOLOR(Var(WNDW_CLR_))
  4321.  
  4322.    cDisp := 'Transform(Zip,"@R 99999 99999")+" "+State+" "+City'
  4323.    Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",1,cDisp,.F.,"","",{||Hand032()})
  4324.  
  4325.    *#SNAPCODE HAND032()
  4326.  
  4327.    VarPop()
  4328.  
  4329. *******************************************************************************
  4330. ** CALLED BY: Hand Code:  HAND056   Setup Bounded by Picklist                **
  4331. **   Comment: Picklist Bounded by Sample                                     **
  4332. *******************************************************************************
  4333. PROCEDURE Plst029()
  4334.    LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
  4335.    LOCAL mState,bCond
  4336.  
  4337.    nPr1 := 16
  4338.    nPc1 := 32
  4339.    nPr2 := nPr1+06
  4340.    nPc2 := nPc1+44
  4341.  
  4342.    VarPush("PLST029")
  4343.  
  4344.    SETCOLOR(Var(WNDW_CLR_))
  4345.  
  4346.    ** NOTE:  Using the PLIST() Bounded By option usually will require
  4347.    **        an indexed search here
  4348.  
  4349.    ** Set Bounded By Memvar **
  4350.    mState := Cities->State
  4351.    bCond := {||Cities->State == mState}
  4352.  
  4353.    cDisp := 'State+" "+City+" "+Transform(Zip,"@R 99999 9999")'
  4354.    Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",3,cDisp,.F.,"","",{||Hand033()},bCond)
  4355.  
  4356.    *#SNAPCODE HAND033()
  4357.  
  4358.    VarPop()
  4359.  
  4360. *******************************************************************************
  4361. ** CALLED BY: Hand Code:  HAND103   QWERTY Scroll Option Setup               **
  4362. **   Comment: QWERTY Picklist Sample                                         **
  4363. *******************************************************************************
  4364. PROCEDURE Plst030()
  4365.    LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
  4366.    LOCAL cKey
  4367.  
  4368.    nPr1 := 14
  4369.    nPc1 := 22
  4370.    nPr2 := nPr1+07
  4371.    nPc2 := nPc1+44
  4372.  
  4373.    VarPush("PLST030")
  4374.  
  4375.    SETCOLOR(Var(WNDW_CLR_))
  4376.  
  4377.    ** You may want KF initialized to something other than **
  4378.    ** spaces, it depends on your particular usage.        **
  4379.    cKey := SPACE(25)
  4380.  
  4381.    cDisp := 'City+" "+State+" "+Transform(Zip,"@R 99999 9999")'
  4382.    Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",2,cDisp,.T.,@cKey,"",{||Hand031()})
  4383.  
  4384.    *#SNAPCODE HAND031()
  4385.  
  4386.    VarPop()
  4387.  
  4388. *******************************************************************************
  4389. ** CALLED BY: Hand Code:  HAND139   Rel_Maint() Sample                       **
  4390. **   Comment: Rel_Maint() Sample                                             **
  4391. *******************************************************************************
  4392. PROCEDURE Plst061()
  4393.    LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
  4394.    LOCAL cKey
  4395.  
  4396.    nPr1 := 08
  4397.    nPc1 := 02
  4398.    nPr2 := nPr1+06
  4399.    nPc2 := nPc1+44
  4400.  
  4401.    VarPush("PLST061")
  4402.  
  4403.    SETCOLOR(Var(WNDW_CLR_))
  4404.  
  4405.    ** You may want KF initialized to something other than **
  4406.    ** spaces, it depends on your particular usage.        **
  4407.    cKey := SPACE(25)
  4408.  
  4409.    cDisp := 'City+" "+State+" "+Transform(Zip,"@R 99999 9999")'
  4410.    Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",2,cDisp,.T.,@cKey,"",{||Rmnt062()})
  4411.  
  4412.    *#SNAPCODE RMNT062()
  4413.  
  4414.    VarPop()
  4415.  
  4416. *******************************************************************************
  4417. ** CALLED BY: Hand Code:  HAND129   Lateral Scroll Picklist Sample           **
  4418. **   Comment: Lateral Scroll Picklist Sample                                 **
  4419. *******************************************************************************
  4420. PROCEDURE Plst130()
  4421.    LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
  4422.  
  4423.    nPr1 := 15
  4424.    nPc1 := 52
  4425.    nPr2 := nPr1+06
  4426.    nPc2 := nPc1+25
  4427.  
  4428.    VarPush("PLST130")
  4429.  
  4430.    SETCOLOR(Var(WNDW_CLR_))
  4431.  
  4432.    cDisp := 'Zip+" "+City+" "+State'
  4433.    Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",1,cDisp,.F.,"","",{||Hand133()})
  4434.  
  4435.    *#SNAPCODE HAND133()
  4436.  
  4437.    VarPop()
  4438.  
  4439. ************************ ENDPLST End of Picklist Calls ************************
  4440.  
  4441. *******************************************************************************
  4442. ** >>>>>>>>>>>>>>>>>>>>>>>> File Maintenance Calls <<<<<<<<<<<<<<<<<<<<<<<<< **
  4443. **                                                                           **
  4444. **                        Note: for GEN_MAINT calls:                         **
  4445. **          If the 3rd to last parameter is zero (0), you may want           **
  4446. **          to replace it with the index order number of the index           **
  4447. **                               created like:                               **
  4448. **                   INDE ON IF(DELETED(),"*"," ") TO ...                    **
  4449. **                            This requires that:                            **
  4450. **                              SET DELETED ON                               **
  4451. **           is in effect also.  This way the deleted records will           **
  4452. **           be RECALLED and updated when you add a record instead           **
  4453. **           of always doing an APPEND BLANK. This method removes            **
  4454. **                      the need to PACK the database.                       **
  4455. *******************************************************************************
  4456.  
  4457. *******************************************************************************
  4458. ** CALLED BY: Hand Code:  HAND104   File Maintenance Setup                   **
  4459. **   Comment: City File Maintenance                                          **
  4460. *******************************************************************************
  4461. PROCEDURE Fmnt034()
  4462.    LOCAL nFmr1,nFmc1,nFmr2,nFmc2
  4463.    PRIVATE cMemChk1
  4464.  
  4465.    VarPush("FMNT034")
  4466.  
  4467.    nFmr1 := 13
  4468.    nFmc1 := 26
  4469.    nFmr2 := nFmr1+08
  4470.    nFmc2 := nFmc1+36
  4471.  
  4472.    SETCOLOR(Var(WNDW_CLR_))
  4473.    DBSELECTAREA("Cities")
  4474.    Cities->(DBSETORDER(2))
  4475.  
  4476.    cMemChk1 := "N"
  4477.  
  4478.    Gen_Maint(nFmr1,nFmc1,nFmr2,nFmc2,"034",aCities,4,.F.,"ACDF")
  4479.  
  4480.    VarPop()
  4481.  
  4482. FUNCTION gSays_034()
  4483.    SETCOLOR(Var(WNDW_CLR_))
  4484.    @ 02,03 WINSAY "City"
  4485.    @ 04,03 WINSAY "State"
  4486.    @ 04,15 WINSAY "Zip"
  4487.    @ 06,02 WINSAY "Edit Memo Field?"
  4488.  
  4489.    RETURN(NIL)
  4490.  
  4491. FUNCTION gGets_034(cG_Func)
  4492.    LOCAL x,GetList := {}
  4493.  
  4494.    @ 02,09 WINGET ACITY PICTURE "!xxxxxxxxxxxxxxxxxxxxxxxx"
  4495.    CLEAR GETS
  4496.  
  4497.    @ 04,09 WINGET ASTATE PICTURE "!!"
  4498.    @ 04,19 WINGET AZIP PICTURE "@R 99999-9999"
  4499.    @ 06,19 WINGET cMemChk1 MENU USING {" Yes "," No "} ;
  4500.       VALIDBLOCK {||ATEXT:=Edt_Memo(10,00,22,78,ATEXT, ;
  4501.       "TEXT"," COMMENTS ",Var(WMSG_CLR_), ;
  4502.       Var(MSG_CLR_)),.T.}
  4503.  
  4504.    IF cG_Func$"AC"
  4505.       ReadGets(@GetList)
  4506.    ENDIF
  4507.    RETURN(NIL)
  4508.  
  4509. FUNCTION gEdit_034(cFilAction)
  4510.    ** enter any additional field edits here and return false if an **
  4511.    ** error occured.                                               **
  4512.    RETURN(.T.)
  4513.  
  4514. FUNCTION gKey_034(cGk_Func)        // A-Add, C-Change, D-Delete
  4515.    LOCAL gKey,x,GetList := {},gKey1
  4516.  
  4517.    @ 18,22,22,63 WINDOW STYLE "3+"
  4518.    SetMsgLin("▓ Enter Key Information ▓ ESC-Exit ▓")
  4519.  
  4520.    gKey1 := SPACE(25)
  4521.  
  4522.    @ 01,02 WINSAY "City"
  4523.    @ 01,07 WINGET gKey1 PICTURE "!xxxxxxxxxxxxxxxxxxxxxxxx"
  4524.  
  4525.    IF cGk_Func != "A"
  4526.       @ WinBott()-2,WinLeft()+2 SAY "Enter Key Info or Blank for Current Rec"
  4527.    ELSE
  4528.       @ WinBott()-2,WinLeft()+2 SAY "Enter Key Info to Add or ESC to Exit"
  4529.    ENDIF
  4530.  
  4531.    ReadGets(@GetList)
  4532.  
  4533.    IF LASTKEY() != K_ESC
  4534.       IF !EMPTY(gKey1)
  4535.          ACITY := gKey1
  4536.       ENDIF
  4537.    ENDIF
  4538.    gKey := gKey1
  4539.  
  4540.    WINDOW REMOVE
  4541.    RETURN(gKey)
  4542.  
  4543. *******************************************************************************
  4544. ** CALLED BY: Hand Code:  HAND142   Parm Pass mOpts                          **
  4545. **   Comment: City File Maintenance                                          **
  4546. *******************************************************************************
  4547. PROCEDURE Fmnt058(mOpts)
  4548.    LOCAL nFmr1,nFmc1,nFmr2,nFmc2
  4549.    PRIVATE cMemChk1
  4550.  
  4551.    VarPush("FMNT058")
  4552.  
  4553.    nFmr1 := 08
  4554.    nFmc1 := 02
  4555.    nFmr2 := nFmr1+08
  4556.    nFmc2 := nFmc1+36
  4557.  
  4558.    SETCOLOR(Var(WNDW_CLR_))
  4559.    DBSELECTAREA("Cities")
  4560.    Cities->(DBSETORDER(2))
  4561.  
  4562.    cMemChk1 := "N"
  4563.  
  4564.    Gen_Maint(nFmr1,nFmc1,nFmr2,nFmc2,"058",aCities,4,.F.,mOpts)
  4565.  
  4566.    VarPop()
  4567.  
  4568. FUNCTION gSays_058()
  4569.    SETCOLOR(Var(WNDW_CLR_))
  4570.    @ 02,03 WINSAY "City"
  4571.    @ 04,03 WINSAY "State"
  4572.    @ 04,15 WINSAY "Zip"
  4573.    @ 06,02 WINSAY "Edit Memo Field?"
  4574.  
  4575.    RETURN(NIL)
  4576.  
  4577. FUNCTION gGets_058(cG_Func)
  4578.    LOCAL x,GetList := {}
  4579.  
  4580.    @ 02,09 WINGET ACITY PICTURE "!xxxxxxxxxxxxxxxxxxxxxxxx"
  4581.    CLEAR GETS
  4582.  
  4583.    @ 04,09 WINGET ASTATE PICTURE "!!"
  4584.    @ 04,19 WINGET AZIP PICTURE "@R 99999-9999"
  4585.    @ 06,19 WINGET cMemChk1 MENU USING {" Yes "," No "} ;
  4586.       VALIDBLOCK {||ATEXT:=Edt_Memo(10,00,22,78,ATEXT, ;
  4587.       "TEXT"," COMMENTS ",Var(WMSG_CLR_), ;
  4588.       Var(MSG_CLR_)),.T.}
  4589.  
  4590.    IF cG_Func$"AC"
  4591.       ReadGets(@GetList)
  4592.    ENDIF
  4593.    RETURN(NIL)
  4594.  
  4595. FUNCTION gEdit_058(cFilAction)
  4596.    ** enter any additional field edits here and return false if an **
  4597.    ** error occured.                                               **
  4598.    RETURN(.T.)
  4599.  
  4600. FUNCTION gKey_058(cGk_Func)        // A-Add, C-Change, D-Delete
  4601.    LOCAL gKey,x,GetList := {},gKey1
  4602.  
  4603.    @ 13,-2,17,39 WINDOW STYLE "3+"
  4604.    SetMsgLin("▓ Enter Key Information ▓ ESC-Exit ▓")
  4605.  
  4606.    gKey1 := SPACE(25)
  4607.  
  4608.    @ 01,02 WINSAY "City"
  4609.    @ 01,07 WINGET gKey1 PICTURE "!xxxxxxxxxxxxxxxxxxxxxxxx"
  4610.  
  4611.    IF cGk_Func != "A"
  4612.       @ WinBott()-2,WinLeft()+2 SAY "Enter Key Info or Blank for Current Rec"
  4613.    ELSE
  4614.       @ WinBott()-2,WinLeft()+2 SAY "Enter Key Info to Add or ESC to Exit"
  4615.    ENDIF
  4616.  
  4617.    ReadGets(@GetList)
  4618.  
  4619.    IF LASTKEY() != K_ESC
  4620.       IF !EMPTY(gKey1)
  4621.          ACITY := gKey1
  4622.       ENDIF
  4623.    ENDIF
  4624.    gKey := gKey1
  4625.  
  4626.    WINDOW REMOVE
  4627.    RETURN(gKey)
  4628.  
  4629. ******************** ENDFMNT End of File Maintenance Calls ********************
  4630.  
  4631. *******************************************************************************
  4632. ** Check Indexes, Called During Initialization                               **
  4633. *******************************************************************************
  4634. PROCEDURE ChkNtxs()
  4635.    LOCAL cIt,cOldRdd := RDDSETDEFAULT(),cFileName
  4636.  
  4637.    EXTERNAL AbIbar
  4638.  
  4639.    BEGIN SEQUENCE
  4640.    SETCOLOR(Var(BRWS_CLR_))
  4641.    @ 09,17,14,62 WINDOW STYLE "3+"
  4642.    SetMsgLin("▓ Checking/Creating System Indexes ▓ ESC to Abort ▓")
  4643.    @ 02,03 WINSAY "Checking Indexes..."
  4644.  
  4645.    IF !FILE("HELP1"+ORDBAGEXT())
  4646.       USE Help NEW EXCLUSIVE VIA "DBFNTX"
  4647.       Message("HELP1"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4648.       cIt := VALTYPE(Help->Hproc+Help->Var)
  4649.       DBCREATEINDEX( "Help1", "HProc+Var", ;
  4650.          {|| Help->HProc+Help->Var+IBar(WinTop()+03,WinLeft()+03,cIt,40,.T.) } )
  4651.       IF IBar() ; BREAK( "Help1"+ORDBAGEXT() ) ; ENDIF
  4652.       DBCLOSEAREA()
  4653.    ENDIF
  4654.  
  4655.    RDDSETDEFAULT(cOldRdd)
  4656.    IF !FILE("CITIES1"+ORDBAGEXT()) ;
  4657.          .OR. !FILE("CITIES2"+ORDBAGEXT()) ;
  4658.          .OR. !FILE("CITIES3"+ORDBAGEXT()) ;
  4659.          .OR. !FILE("CITIES4"+ORDBAGEXT())
  4660.       USE Cities NEW EXCLUSIVE
  4661.       IF !FILE("CITIES1"+ORDBAGEXT())
  4662.          Message("CITIES1"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4663.          cIt := VALTYPE(Cities->Zip)
  4664.          DBCREATEINDEX("Cities1", ;
  4665.             "Zip", ;
  4666.             {||Cities->Zip+ ;
  4667.             Ibar(WinTop()+03,WinLeft()+03,cIt,40,.T.)})
  4668.          IF IBar() ; BREAK("Cities1"+ORDBAGEXT()) ; ENDIF
  4669.       ENDIF
  4670.       IF !FILE("CITIES2"+ORDBAGEXT())
  4671.          Message("CITIES2"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4672.          cIt := VALTYPE(Cities->City)
  4673.          DBCREATEINDEX("Cities2", ;
  4674.             "City", ;
  4675.             {||Cities->City+ ;
  4676.             Ibar(WinTop()+03,WinLeft()+03,cIt,40,.T.)})
  4677.          IF IBar() ; BREAK("Cities2"+ORDBAGEXT()) ; ENDIF
  4678.       ENDIF
  4679.       IF !FILE("CITIES3"+ORDBAGEXT())
  4680.          Message("CITIES3"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4681.          cIt := VALTYPE(Cities->State)
  4682.          DBCREATEINDEX("Cities3", ;
  4683.             "State", ;
  4684.             {||Cities->State+ ;
  4685.             Ibar(WinTop()+03,WinLeft()+03,cIt,40,.T.)})
  4686.          IF IBar() ; BREAK("Cities3"+ORDBAGEXT()) ; ENDIF
  4687.       ENDIF
  4688.       IF !FILE("CITIES4"+ORDBAGEXT())
  4689.          Message("CITIES4"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4690.          cIt := VALTYPE(If(Dele(),"*"," "))
  4691.          DBCREATEINDEX("Cities4", ;
  4692.             'If(Dele(),"*"," ")', ;
  4693.             {||If(Dele(),"*"," ")+ ;
  4694.             Ibar(WinTop()+03,WinLeft()+03,cIt,40,.T.)})
  4695.          IF IBar() ; BREAK("Cities4"+ORDBAGEXT()) ; ENDIF
  4696.       ENDIF
  4697.       DBCLOSEAREA()
  4698.    ENDIF
  4699.  
  4700.    RDDSETDEFAULT(cOldRdd)
  4701.    IF !FILE("FRIENDS1"+ORDBAGEXT()) ;
  4702.          .OR. !FILE("FRIENDS2"+ORDBAGEXT())
  4703.       USE Friends NEW EXCLUSIVE
  4704.       IF !FILE("FRIENDS1"+ORDBAGEXT())
  4705.          Message("FRIENDS1"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4706.          cIt := VALTYPE(Friends->City)
  4707.          DBCREATEINDEX("Friends1", ;
  4708.             "City", ;
  4709.             {||Friends->City+ ;
  4710.             Ibar(WinTop()+03,WinLeft()+03,cIt,40,.T.)})
  4711.          IF IBar() ; BREAK("Friends1"+ORDBAGEXT()) ; ENDIF
  4712.       ENDIF
  4713.       IF !FILE("FRIENDS2"+ORDBAGEXT())
  4714.          Message("FRIENDS2"+ORDBAGEXT()+" Missing; Building-",WinTop()+02,WinLeft()+03,40)
  4715.          cIt := VALTYPE(If(Dele(),"*"," "))
  4716.          DBCREATEINDEX("Friends2", ;
  4717.             'If(Dele(),"*"," ")', ;
  4718.             {||If(Dele(),"*"," ")+ ;
  4719.             Ibar(WinTop()+03,WinLeft()+03,cIt,40,.T.)})
  4720.          IF IBar() ; BREAK("Friends2"+ORDBAGEXT()) ; ENDIF
  4721.       ENDIF
  4722.       DBCLOSEAREA()
  4723.    ENDIF
  4724.    RDDSETDEFAULT(cOldRdd)
  4725.  
  4726.    RECOVER USING cFileName           // This executed on User Abort
  4727.       DBCLOSEALL()
  4728.       FERASE(cFileName)            // Erase Partially Built Index
  4729.       SETCOLOR("W/N")
  4730.       QUIT
  4731.    END SEQUENCE
  4732.  
  4733.    WINDOW REMOVE
  4734.  
  4735. *******************************************************************************
  4736. ** Open All Application Data and Index Files                                 **
  4737. *******************************************************************************
  4738. PROCEDURE OpenFiles()
  4739.  
  4740.    SETCOLOR(Var(BRWS_CLR_))
  4741.    @ 10,29,14,51 WINDOW STYLE "3+"
  4742.    @ 02,03 WINSAY "Opening Files..."
  4743.    SetMsgLin("▓ Opening Files, Please Wait ▓")
  4744.  
  4745.    USE Help NEW EXCLUSIVE ALIAS Help VIA "DBFNTX" ;
  4746.        INDEX Help1
  4747.  
  4748.    USE Cities NEW EXCLUSIVE ALIAS Cities VIA "DBFNTX" ;
  4749.       INDEX Cities1,Cities2,Cities3,Cities4
  4750.  
  4751.    USE Friends NEW EXCLUSIVE ALIAS Friends VIA "DBFNTX" ;
  4752.       INDEX Friends1,Friends2
  4753.  
  4754.    WINDOW REMOVE
  4755.